2016-06-03 2 views
-2

Я знаю, что этот вопрос был задан и ответил here, в других местах, но ни один из ответов не затрагивало причины я был дан (года назад) за негативное воздействие производительности «ненужные» фигурные скобки. В этом свете я хотел бы вернуться к этой проблеме.Пересмотреть фигурные скобки и производительность в C++

Короче говоря, мне сказали, что:

if(true) 
    do_something(); 

более производительный, чем

if(true) 
{ 
    do_something(); 
} 

В качестве причины, как я помню, был, потому что компилятор будет ввести филиал в сборе коды второй случай, который может иметь кумулятивный эффект.

Теперь, я могу заклинание complier, но кроме этого я знаю очень мало о том, как они работают, так и есть ли теория выше? Было ли это правдой?

+6

Вам не нужно слушать того, кто вам сказал. – NathanOliver

+4

Тот, кто сказал вам, что это либо некомпетентно, либо злонамеренно. – Mysticial

+6

Вам сказали грубый мусор. Убейте этого человека в заднице, пожалуйста (за некомпетентность). –

ответ

0

«Факты», которые вы получили, полностью составлены. Нет никакого снижения производительности вообще, как люди уже упоминали в самой ссылке, которую вы дали.

Невозможно объяснить причину чего-то, что не соответствует действительности.

1

так ли это теория верна?

No.

Было ли когда-нибудь правда?

No.
даже не с худшими древних составителей, не имеющих умные стратегии оптимизации я мог себе представить эти заявления будут излучать другой код assenbly.

Они просто будут выбрасываться в качестве вызова подпрограммы do_something.

+0

Я думаю, мы не можем исключить ошибки тайного компилятора? – SergeyA

+0

@SergeyA Я считаю, что даже Turbo C++ получает это право. –

1

В неоптимизированном, а также оптимизированном сгенерированном коде эти два оператора будут точно соответствовать одному и тому же. Скобки создают новую область, где ничего не объявлено, поэтому ничто не может быть реализовано по-разному, семантически. (Если бы немой компилятор справился с пустой стековой рамкой для этого внутреннего блока?!)

Смежные вопросы