2011-01-28 3 views
2

есть ли какой-либо эффект производительности на «Lines of code - (C)», выполняемый внутри вложенных ifs?Вопрос о производительности при вложенных if

if (condition_1) 
{ 
    /* Lines of code */ - (A) 

    if (condition_2) 
    { 
     /* Lines of code */ - (B) 

     if (condition_n) 
     { 
      /* Lines of code */ - (C) 
     } 
    } 
} 

это означает, что вы можете вложить любое количество, если заявления не оказывая влияния на время выполнения кода заключая в конце прошлого, если заявление?

+7

Предупреждение об оптимизации микропроцессора! –

+0

Что бы это было? – user3244

+0

«Эффективность» по сравнению с чем? Много раз не имеет смысла говорить о производительности фрагмента кода без сравнения с альтернативным способом достижения того же логического результата. Как вы представляете себе этот код по-разному, сохраняя те же результаты? – TheUndeadFish

ответ

4

Помните, что C и C++ переведены на их эквиваленты сборки. В большинстве случаев это, скорее всего, происходит через некоторую форму сравнения (например, cmp) и в некоторой форме инструкции jmp.

Таким образом, любой код, созданный от (C), все равно будет таким же. Вложение if не влияет на выход. Если результирующий код должен генерировать add eax, 1 независимо от того, сколько из них предшествует этому, все равно будет то же самое.

Единственный штраф за исполнение будет в количестве if заявлений, которые вы используете, и независимо от того, является ли результирующая сборка (jxx) дорогой в вашей системе. Однако я сомневаюсь, что повторное вложенное использование if, скорее всего, будет узким местом производительности в вашем приложении. Обычно требуется время обработки данных и времени, необходимых для получения данных.

+0

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

1

Вы не будете влиять на время выполнения указанного кода, но если оценка ваших условий является сложной или зависит от других факторов, то она потенциально может удлинить всего времени выполнения.

1

Код будет работать так быстро, как если бы он был снаружи. Просто помните, что вычисление выражения (в , если) не является «бесплатным», и займет немного времени (больше, если условие более сложное), поэтому, если ваш код глубоко вложен, потребуется больше времени для достигать It.

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