Unrolled loops (v11)

Revision 11 of this benchmark created on


Description

It seems the latest and greatest JavaScript engines have catched up and loop unrolling is not as great a speedup as it once was. Still, both unrolled loop variants are 10% to 25% faster than the for loop on both Safari 5 and Chrome 5.

Preparation HTML

<script>
  var a = 0;
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
For loop
for (var i = 0; i < 100; i++) a++;
ready
Unrolled loop
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
ready
Unrolled loop (1 statement)
a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++;
ready
Partial Unrolling
for (var i = 0; i < 10; i++) {
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
}
ready
Larger Partial Unrolling
for (var i = 0; i < 2; i++) {
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
 a++;
}
ready
Larger Partial Unrolling (single statement)
for (var i = 0; i < 2; i++) {
 a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++, a++;
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by Thomas Fuchs on
  • Revision 2: published by elliottcable on
  • Revision 3: published by Kristof Neirynck on
  • Revision 4: published by Micheil Smith on
  • Revision 6: published by Ryan Tenney on
  • Revision 7: published by gonchuki on
  • Revision 8: published by TW on
  • Revision 11: published on
  • Revision 16: published on