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







All Articles