mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
79 lines
1.3 KiB
JavaScript
79 lines
1.3 KiB
JavaScript
const iterations = 1_000;
|
|
|
|
export var report = {
|
|
async: 0,
|
|
callback: 0,
|
|
sync: 0,
|
|
then: 0,
|
|
};
|
|
|
|
const tests = {
|
|
callback(n, cb) {
|
|
if (n === iterations) return cb();
|
|
tests.callback(1 + n, () => cb());
|
|
},
|
|
|
|
sync(n) {
|
|
if (n === iterations) return;
|
|
|
|
tests.sync(1 + n);
|
|
},
|
|
|
|
async async(n) {
|
|
if (n === iterations) return;
|
|
|
|
await tests.async(1 + n);
|
|
},
|
|
|
|
then(n) {
|
|
if (n === iterations) return;
|
|
return Promise.resolve(1 + n).then(tests.then);
|
|
},
|
|
};
|
|
|
|
async function test(log) {
|
|
{
|
|
const a = performance.now();
|
|
await tests.async(0);
|
|
if (log)
|
|
console.log(
|
|
`async/await: ${(report.async = (performance.now() - a).toFixed(4))}ms`
|
|
);
|
|
}
|
|
|
|
{
|
|
const a = performance.now();
|
|
tests.callback(0, function () {
|
|
if (log)
|
|
console.log(
|
|
`callback: ${(report.callback = (performance.now() - a).toFixed(
|
|
4
|
|
))}ms`
|
|
);
|
|
});
|
|
}
|
|
|
|
{
|
|
const a = performance.now();
|
|
await tests.then(0);
|
|
if (log)
|
|
console.log(
|
|
`then: ${(report.then = (performance.now() - a).toFixed(4))}ms`
|
|
);
|
|
}
|
|
|
|
{
|
|
const a = performance.now();
|
|
tests.sync(0);
|
|
if (log)
|
|
console.log(
|
|
`sync: ${(report.sync = (performance.now() - a).toFixed(4))}ms`
|
|
);
|
|
}
|
|
}
|
|
|
|
let warmup = 10;
|
|
while (warmup--) await test();
|
|
|
|
await test(true);
|