function assert(b) { | |
if (!b) | |
throw new Error("Bad") | |
} | |
noInline(assert); | |
function test(f, v, c, d) { | |
return f.bind(v, c, d); | |
} | |
function test2(f, v) { | |
return f.bind(v); | |
} | |
function foo(a,b,c,d,e,f) { return this; } | |
let thisValue = {}; | |
let start = Date.now(); | |
for (let i = 0; i < 1000000; i++) { | |
let f = test(foo, thisValue, 20, 30); | |
assert(f(foo, thisValue, 20, 30) === thisValue); | |
} | |
for (let i = 0; i < 1000000; i++) { | |
let f = test2(foo, thisValue); | |
assert(f(foo, thisValue, 20, 30) === thisValue); | |
} | |
const verbose = false; | |
if (verbose) | |
print(Date.now() - start); |