Javascript: How can I optimize this line for performance?
I would like to optimize the second line in a for loop (var phase). I believe that moving parts of it outside the loop will optimize performance. What can I do outside of the for loop to improve performance?
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';
}
+3
source to share
1 answer
Maybe a little faster:
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';
}
However, you probably won't notice the difference unless you have millions of items.
Update : After a few tests that seems to be about 7% faster, but only starting to take seconds per 1 million items.
+1
source to share