Javascript:如何优化这一行的性能?

Javascript:如何优化这一行的性能?,javascript,performance,for-loop,Javascript,Performance,For Loop,我想优化for循环(var阶段)中的第二行。我相信,将it的各个部分移出循环将优化性能。我可以将什么移到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]

我想优化for循环(var阶段)中的第二行。我相信,将it的各个部分移出循环将优化性能。我可以将什么移到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';
}
for(变量i=0;i
可能会稍微快一点:

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';
}
var l=items.length,
s=(document.body.scrollTop/1250),
阶段;
对于(变量i=0;i
但是,除非您有数百万个项目,否则您很可能不会注意到差异


更新:在几次基准测试之后,速度似乎提高了7%左右,但仅在100万个元素之后的几秒钟内就开始了。

@dsg每个优化问题都是一个代码审查问题吗?你将不依赖于
i
的所有问题都从循环中移除了。因此,这段代码会导致应用程序出现问题?我不认为这是减慢脚本速度的原因。这里没有什么过于复杂的东西(而且v8可能会为您优化循环)。为什么它会关闭?我想如果左边不影响顶部,那么有一个很好的答案。。。我已经写了,现在不能发布,只要
document.body.scrollTop
不依赖
项[X].style.left
,这通常不能保证。我假设
left
影响
相对
绝对
元素位置,因此不应该修改滚动(特别是垂直的滚动条)。但是如果是这样的话,那就真的没什么办法了。