Simple generator vs custom iterator

Benchmark created on


Setup

const arr = Array.from({ length: 10_000 }).map((_, i) => i)

Test runner

Ready to run.

Testing in
TestOps/sec
Iteratable
const result = {
	value: undefined,
	done: false
}

const elems = {
	[Symbol.iterator]() {
		let i = 0
		return {
			next() {
				result.value = arr[i]
				result.done = i++ >= arr.length
				return result
			}
		}
	}
}

for (const elem of elems) {
	
}
ready
Generator
function* fn() {
	for (let i = 0; i < arr.length; i++) {
		yield arr[i]
	}
}

const elems = fn()

for (const elem of elems) {
	
}
ready

Revisions

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