Миф о скорости выполнения оператора IF - страница 2

 
Andy_Kon писал (а) >>

Абсолютно верно. Без "булыжника" всё примерно 1 с.

ператор if - простой без тары :-) работает очень быстро

при трансляции - компиляции - происходит практически обычная машинная команда сравнения

 

Вообще-то, чтобы провести сравнение, необходимо провести миллион-другой циклов, так как погрешность сравнения с использованием GetTickCount составляет 16 миллисекунд (об этом мы неоднократно здесь говорили, читайте также MSDN, хотя бы RSDN)

Во-вторых, константные сравнения типа 1==1 или 2==2 производятся в процессе компиляции, т.е. во время выполнения вы меряете воздух

 
stringo писал (а) >>

Вообще-то, чтобы провести сравнение, необходимо провести миллион-другой циклов, так как погрешность сравнения с использованием GetTickCount составляет 16 миллисекунд (об этом мы неоднократно здесь говорили, читайте также MSDN, хотя бы RSDN)

Во-вторых, константные сравнения типа 1==1 или 2==2 производятся в процессе компиляции, т.е. во время выполнения вы меряете воздух

1. >>Вообще-то, чтобы провести сравнение, необходимо провести миллион-другой циклов...

В приведённом коде

for(int $i=100000000;$i>0;$i--){

Сто миллионов циклов

2. В приведённом выше коде нет и намёка на GetTickCount там идёт речь о секундах.

3. Для оператора типа IF (практически во всех языках) не имеет значение "мерить" воздух или кирпичи.

 
а что собственно сравнивается?) судя по коду скорость выполнения if(1==1 &&2==2 &&3==3 &&4==4 &&5==5 &&6==6 &&7==7 &&8==8 &&9==9 &&0==0){ и if(1==1){... if(0==0){ то есть скорость вызова одного оператора и 10, а так как я думал я Вас частота процессора как минимум 1 Ггц, то разницы не будет) если бы такое реализовывать на чистом асме то первая строка это что-то типа mov eax,ebx jne m1 где регистры будут содержать вычисленное заранее значение выражения а вторая строка это 10 таких вызовов. но учитывая количество операторов потраченных на вычилсение логического выражения в конце концов количество должно быть примерно одинаково так как встроенный язык осовывается на си который максимально приближен к асму, то ситуация похожа, но так как вызов оператора - это определенный шаблон с сохранением переменных итд, то на вызов 10 операторов потратится всеже больше операторов. Но опять же учитывая сегоднящние возможности ПК разницы почти нет З.Ы. "Скорость выполнения оператора IF не зависит ни от чего!!" - на мой взгляд не корректное высказываение хотя бы потому что скорость зависит от машины)) ЗЫ давно не писал на форуме, поэтому чето разошелся)) ногами не бейте)
 

ээ.. там подразумевались переносы, но чето все съелось)

Причина обращения: