for
loops still win.
For small loops over 3 items, for
is only marginally faster after the warmup period:
$ node --expose-gc loop_perf.js 3
Performing 333333334 runs of arrays with 3 elements
for: 1.114s
3
forOf: 2.002s
3
forEach: 2.428s
3
for: 2.178s
3
forOf: 2.932s
3
forEach: 2.524s
3
for: 2.148s
3
forOf: 2.958s
3
forEach: 2.531s
3
For larger loops, over 100 items, for
is a little faster:
$ node --expose-gc loop_perf.js 100
Performing 10000000 runs of arrays with 100 elements
for: 610.374ms
4950
forOf: 1.081s
4950
forEach: 881.132ms
4950
for: 585.957ms
4950
forOf: 1.070s
4950
forEach: 979.015ms
4950
for: 608.199ms
4950
forOf: 1.138s
4950
forEach: 1.088s
4950
For huge loops over one million items, for
is over 10x faster:
$ node --expose-gc loop_perf.js 1000000
Performing 1000 runs of arrays with 1000000 elements
for: 712.047ms
499999500000
forOf: 844.897ms
499999500000
forEach: 11.852s
499999500000
for: 725.079ms
499999500000
forOf: 966.983ms
499999500000
forEach: 11.899s
499999500000
for: 719.693ms
499999500000
forOf: 967.394ms
499999500000
forEach: 12.117s
499999500000