2014-12-19 5 views
-1
 if (x > 5) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 

, и у меня есть одно выражение код:Эффективное выполнение кода

return (x > 5); 

Какой блок кода будет выполняться более эффективно -Either в другое, если-блок или один Return Заявление

ответ

3
?

Достойный компилятор оптимизирует первую версию во второй.

Без оптимизации, первая версия содержит ветвь (инструкция Jxx в сборке x86), которая медленно:

cmp ecx, 5 ; assume ecx contains the value of x 
jle 1f  ; assume x is signed 
mov eax, 1 
ret 
1: 
xor eax, eax 
ret 

Вторая версия переводит инструкции SETxx в x86, которая не включает в себя филиал, и будет быстрее:

xor eax, eax 
cmp ecx, 5 
setg al 
ret 
+0

Ok Fine Спасибо ... – user3933885

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