for-of-vs-for-loop

JavaScript performance comparison

Revision 19 of this test case created by Andreas Svensson

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  this.vals = "x".repeat(1000).split("").map((_, i) => i);

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
c
var $jscomp = $jscomp || {};
$jscomp.scope = {};
$jscomp.arrayIteratorImpl = function(a) {
  var b = 0;
  return function() {
    return b < a.length ? {done:!1, value:a[b++]} : {done:!0};
  };
};
$jscomp.arrayIterator = function(a) {
  return {next:$jscomp.arrayIteratorImpl(a)};
};
$jscomp.makeIterator = function(a) {
  var b = "undefined" != typeof Symbol && Symbol.iterator && a[Symbol.iterator];
  return b ? b.call(a) : $jscomp.arrayIterator(a);
};
for (var collected = [], $jscomp$iter$0 = $jscomp.makeIterator(this.vals), $jscomp$key$value = $jscomp$iter$0.next(); !$jscomp$key$value.done; $jscomp$key$value = $jscomp$iter$0.next()) {
  var value = $jscomp$key$value.value;
  collected.push({value:value});
}
collected.length = this.vals.length;
pending…
for-of
var collected = [];
for (var value of this.vals) {
  collected.push({ value: value });
}
collected.length = this.vals.length;
pending…
for-loop
var collected = [];
var length = this.vals.length;
var value = 0;

for (var i = 0; i < length; i++) {
  value = this.vals[i];
  collected.push({ value: value });
}
collected.length = this.vals.length;
pending…

Compare results of other browsers

Revisions

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

0 Comments