Add bench suite of common Deno functions (#9878)

This commit is contained in:
Aaron O'Mullan 2021-03-26 14:13:53 +01:00 committed by GitHub
parent 505db5da2c
commit 6c6f3e87c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

53
cli/bench/deno_common.js Normal file
View File

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