deno.land / x / deno@v1.28.2 / cli / bench / fs / run.mjs
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
let total = 5;let current = "";const values = {};const runtime = typeof Deno !== "undefined" ? "deno" : "node";
function bench(fun, count = 100000) { if (total === 5) console.log(fun.toString()); const start = Date.now(); for (let i = 0; i < count; i++) fun(); const elapsed = Date.now() - start; const rate = Math.floor(count / (elapsed / 1000)); console.log(`time ${elapsed} ms rate ${rate}`); values[current] = values[current] || []; values[current].push(rate); if (--total) bench(fun, count); else total = 5;}
let fs;if (runtime === "node") { fs = await import("fs");}
const getFunction = runtime === "deno" ? (name) => { current = name; return Deno[name]; } : (name) => { current = name; return fs[name]; };
const writeFileSync = getFunction("writeFileSync");writeFileSync("test", new Uint8Array(1024 * 1024), { truncate: true });
const copyFileSync = getFunction("copyFileSync");bench(() => copyFileSync("test", "test2"), 10000);
const truncateSync = getFunction("truncateSync");bench(() => truncateSync("test", 0));
const lstatSync = getFunction("lstatSync");bench(() => lstatSync("test"));
const { uid, gid } = lstatSync("test");
const chownSync = getFunction("chownSync");bench(() => chownSync("test", uid, gid));
const chmodSync = getFunction("chmodSync");bench(() => chmodSync("test", 0o666));
// const cwd = getFunction("cwd");// bench(() => cwd());
// const chdir = getFunction("chdir");// bench(() => chdir("/"));
const readFileSync = getFunction("readFileSync");writeFileSync("test", new Uint8Array(1024), { truncate: true });bench(() => readFileSync("test"));
writeFileSync(new URL(`./${runtime}.json`, import.meta.url), new TextEncoder().encode(JSON.stringify(values, null, 2)), { truncate: true });
Version Info