function assert(b) { if (!b) throw new Error("Bad assertion") } noInline(assert); function test(map, key, value) { let loadValue = eval(`${Math.random()}; let k = key; (function getValue() { return map.get(k); });`); noInline(loadValue); for (let i = 0; i < 1000000; i++) { assert(loadValue() === value); } } let reallyLongString = ""; for (let i = 0; i < 60000; i++) { reallyLongString += "i"; } reallyLongString.toString(); let keys = [ "foo", "fdashfdsahfdashfdsh", "rope" + "string", reallyLongString, 259243, 1238231.2138321, -92138.328, {foo: 25}, Symbol("Hello world"), true, false, undefined, null, NaN, -0, function foo() {} ]; let start = Date.now(); let map = new Map; let i = 0; for (let key of keys) { let value = {i: i++}; map.set(key, value); test(map, key, value); } const verbose = false; if (verbose) print(Date.now() - start);