diff --git a/cli/bench/deno_common.js b/cli/bench/deno_common.js new file mode 100644 index 0000000000..dc6e29f42c --- /dev/null +++ b/cli/bench/deno_common.js @@ -0,0 +1,53 @@ +// Run with: deno run -A ./cli/bench/deno_common.js +function benchSync(name, n, innerLoop) { + const t1 = Date.now(); + for (let i = 0; i < n; i++) { + innerLoop(i); + } + const t2 = Date.now(); + const dt = (t2 - t1) / 1e3; + const r = n / dt; + console.log( + `${name}:${" ".repeat(20 - name.length)}\t` + + `n = ${n}, dt = ${dt.toFixed(3)}s, r = ${r.toFixed(0)}/s`, + ); +} + +function benchUrlParse() { + benchSync("url_parse", 5e4, (i) => { + new URL(`http://www.google.com/${i}`); + }); +} + +function benchNow() { + benchSync("now", 5e5, () => { + performance.now(); + }); +} + +function benchWriteNull() { + // Not too large since we want to measure op-overhead not sys IO + const dataChunk = new Uint8Array(100); + const file = Deno.openSync("/dev/null", { write: true }); + benchSync("write_null", 5e5, () => { + Deno.writeSync(file.rid, dataChunk); + }); + Deno.close(file.rid); +} + +function benchReadZero() { + const buf = new Uint8Array(100); + const file = Deno.openSync("/dev/zero"); + benchSync("read_zero", 5e5, () => { + Deno.readSync(file.rid, buf); + }); + Deno.close(file.rid); +} + +function main() { + benchUrlParse(); + benchNow(); + benchWriteNull(); + benchReadZero(); +} +main();