JQuery / Javascript, если скорость заявления - PullRequest
3 голосов
/ 17 июня 2010

Дано:

var
isIE = $.browser.msie && !$.support.opacity, 
isIE6 = isIE && $.browser.version < 7;

Что будет быстрее:

if(isIE6){ doSomething(); }
else { doSomethingElse(); }

OR

if(!isIE6){ doSomethingElse(); }
else { doSomething(); }

Они одинаковы по скорости?

Ответы [ 4 ]

4 голосов
/ 17 июня 2010

Учитывая этот тест на итерационном цикле 1 000 000, разницы нет.

var test = true;

var count = 1000000;
var stop, start = new Date();

while(count--) {
    if(test) ; // Change to !test
    else ;
}

stop = new Date();

alert(stop - start);

Протестировано в Firefox, Safari и IE8.

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

1 голос
/ 17 июня 2010

Первый будет быстрее, потому что он требует на один шаг меньше (оператор! Действительно вызывает действие, отдельное от оператора if).

Тем не менее, реальной разницы не будет.

1 голос
/ 17 июня 2010

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

0 голосов
/ 17 июня 2010

Я бы сказал, что вы просто проверяете это. Есть профилировщик в Firebug , а также один в IE8 .

Grz, Kris.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...