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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
Browser:
Chrome 134
Operating system:
Windows
Device Platform:
Desktop
Date tested:
one year ago
for
16.7M/s
for optimized
16.7M/s
reduce
15.4M/s
while
12.2M/s
forEach
4.7M/s
for of
4.2M/s
for in
422K/s
for of babel
2K/s
View exact numbers
Test name
Executions per second
✓
for
16,743,503 Ops/sec
for optimized
16,727,571 Ops/sec
reduce
15,415,673 Ops/sec
while
12,166,948 Ops/sec
forEach
4,671,144 Ops/sec
for of
4,247,252 Ops/sec
for in
421,926 Ops/sec
for of babel
1,771 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; } } }