var items = [];
for(var i = 0 ; i < 10000 ; i++){
items.push(Math.random());
}
var processItem = function(x){
return Math.sin(x)*10;
} ;
var Func = function(){
var len = items.length;
for(var i = 0; i < len ; i++){
processItem(items[i]);
}
};
var Func2 = function(){
var idx = 0;
var i = items.length >> 3;
while(i--){
processItem(items[idx++]);
processItem(items[idx++]);
processItem(items[idx++]);
processItem(items[idx++]);
processItem(items[idx++]);
processItem(items[idx++]);
processItem(items[idx++]);
processItem(items[idx++]);
}
i = items.length - idx;
while(i--){
processItem(items[idx++])
}
};
大家来说说上面函数Func和Func2的性能问题吧
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
上面第1种方法性能好,把 Func1 和 Func2 的执行顺序换了下,神奇了
唉,还是不要太在意这个事情了
Func没什么性能问题,var len不是很有必要,浏览器会做优化的。
Func2这样写很奇怪,为了减少loop次数,个人觉得主要开销processItem的执行,这个不会变,减少loop次数并不会有多大提升吧,引入了额外的idx自增操作,而且code很难看。
达夫设备?没必要吧关注了吧,毕竟浏览器已经发展到现在了...