Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
for ( ... in ...)
должен приводить к деоптимизации всей функции, в которой он находится, так что странно, что все работало медленнее.--trace-bailout
, --trace-deopt
флагами?var a = [];
a[10000000] = 1;
a.length; // 10000001
var a=[]
a[10]=1
a//=>[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1]
a.hasOwnProperty(10)//=>true
a.hasOwnProperty(9) //=>false
Array.prototype.forIn=function(cb,cont){
for(var i in this)
if(this.hasOwnProperty(i))cb.call(cont||this,this[i]);}
a=[1];
a[1000000]=1;
console.time('qwe');
a.forEach(function(i){console.log(i);})
console.timeEnd('qwe'); //=>404ms
console.time('asd');
a.forIn(console.log,console);
console.timeEnd('asd'); //=>1ms
в результате получаем около 25 байт [0,777,123,456,2,0,123,456]
Танчики на node.js — оптимизация