Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
forEach vs for len vs for in vs for of vs babel for of loops
created based off of an archived jsperf benchmark: http://web.archive.org/web/20191008221700/https://jsperf.com/foreach-vs-for-loop-vs-for-in-vs-for-of-vs-babel-for-of
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
Browser:
Chrome Mobile 120
Operating system:
Android
Device Platform:
Mobile
Date tested:
2 years ago
Test name
Executions per second
forEach
3027321.2 Ops/sec
for
14214696.0 Ops/sec
for optimized
14248041.0 Ops/sec
reduce
12760119.0 Ops/sec
while
10594961.0 Ops/sec
for in
662768.6 Ops/sec
for of
10743246.0 Ops/sec
for of babel
1365.4 Ops/sec
HTML Preparation code:
<script> Benchmark.prototype.setup = function() { var testData = []; for (var i = 0; i < 100; i++) { testData.push(i); } }; </script>
Tests:
forEach
var res = 0; testData.forEach(function(x) { res += x; });
for
var res = 0; for (var i = 0; i < testData.length; i++) { res += testData[i]; }
for optimized
var res = 0; for (var i = 0, len = testData.length; i < len; i++) { res += testData[i]; }
reduce
var res = testData.reduce(function(sum, x) { return sum + x; }, 0);
while
var res = 0; var i = testData.length; while (i--) { res += testData[i]; }
for in
var res = 0; for (var data in testData) { res += testData[i]; }
for of
var res = 0; for (var data of testData) { res += testData[i]; }
for of babel
var res = 0; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = testData[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var value = _step.value; console.log(value); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { res += testData[i]; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } }