Показать сообщение отдельно
  #9 (permalink)  
Старый 03.03.2010, 13:19
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от e1f
Chrome говорит, что Math.floor на 5-10% быстрее
Но обе операции медленнее, чем ~~ в опере.

И еще: ~~ не эквивалентен Math.floor'у.
alert( [~~-5.5, Math.floor(-5.5)] )


UPD: n|0
(function(){
    var i,
        num = 2.50,
        now = +new Date, a = [];

    for (i = 1000000; i--; ) Math.floor(num);
    a.push('Math.floor: ' + (new Date().getTime() - now) + 'ms');

    for (i = 1000000, now = +new Date; i--; ) ~~num;
    a.push('~~: ' + (new Date().getTime() - now) + 'ms');

    for ( i = 1000000, now = +new Date(); i--; ) num|0;
    a.push('0|: ' + (new Date().getTime() - now) + 'ms');

    for ( i = 1000000, now = +new Date(); i--; ) num<<0;
    a.push('<<0: ' + (new Date().getTime() - now) + 'ms');

    for ( i = 1000000, now = +new Date(); i--; ) num>>0;
    a.push('>>0: ' + (new Date().getTime() - now) + 'ms');

    alert(a.join('\n'));
}());
Новый вариант уделывает Math.floor в хромом.
В опере и ие8 он лучше ~~.
В FF не лучше ~~ (порой отстает на несколько мс).

Последний раз редактировалось B@rmaley.e><e, 03.03.2010 в 13:36.
Ответить с цитированием