我想优化for循环中的第二行(var阶段)。我相信把它的一部分移到循环之外会优化性能。可以将哪些内容移到for循环之外以提高性能?
for (var i = 0; i < items.length; i++) {
var phase = Math.sin((document.body.scrollTop / 1250) + (i % 5));
//var phase = 0.31456656061611776 + (i % 5);
items[i].style.left = items[i].basicLeft + 100 * phase + 'px';
}发布于 2015-05-01 08:28:23
可能会稍微快一点:
var l = items.length,
s = (document.body.scrollTop / 1250),
phase;
for (var i = 0; i < l; ++i) {
phase = Math.sin(s + (i % 5));
items[i].style.left = items[i].basicLeft + 100 * phase + 'px';
}但是,除非您有数百万个项目,否则您很可能不会注意到其中的差异。
更新:经过几次基准测试后,似乎快了大约7%,但仅仅开始花费超过100万个元素的时间。
https://stackoverflow.com/questions/29979787
复制相似问题