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); |