Сообщение от 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 не лучше ~~ (порой отстает на несколько мс).