filter/foreach vs for..of DOM template version

Benchmark created on


Setup

	const
		ul = document.createElement("ul"),
		userTemplate = (user) => {
			ul.append(
				document.createElement("li").append(
					Object.assign(
						document.createElement("a"),
						{
							href : user.email,
							textContent : user.name
						}
					)
				)
			)
		};
	let
		users = [
			{
				name : "John",
				contact : true,
				email : "dummy@blackhole.com"
			},{
				name : "Jimbo",
				contact : true,
				email : "dummy@blackhole.com"
			},{
				name : "Jenna",
				contact : true,
				email : "dummy@blackhole.com"
			},{
				name : "Jason",
				contact : false,
				email : "dummy@blackhole.com"
			},{
				name : "Joker",
				contact : true,
				email : "dummy@blackhole.com"
			},{
				name : "Jakamoon",
				contact : false,
				email : "dummy@blackhole.com"
			},{
				name : "Jacob",
				contact : true,
				email : "dummy@blackhole.com"
			},{
				name : "Jospeh",
				contact : false,
				email : "dummy@blackhole.com"
			},{
				name : "Josepus",
				contact : true,
				email : "dummy@blackhole.com"
			},{
				name : "Blaine",
				contact : false,
				email : "dummy@blackhole.com"
			}
		];
		
	for (let i = 0; i < 8; i++) {
		users = users.concat(users);
	}

Teardown

ul.textContent = "";

Test runner

Ready to run.

Testing in
TestOps/sec
filter / forEach
users.filter(
	(user) => user.contact
).forEach(
	userTemplate
);
ready
for..of
for (user of users)
	if (user.contact)
		userTemplate(user);
ready

Revisions

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