Appearance
Denoは標準で色々なツールが組み込まれているのだが、その中でもBenchが異常に便利なので紹介したい。
こんな風に関数を書いて……
ts
export function serialize(obj: any): string {
const objType = typeof obj;
switch (objType) {
case "undefined":
return "U";
//
// :
// :
//
default:
throw "Unexpected type";
}
}
mod_bench.ts
と言う感じで_bench
とサフィックスつけたファイルにこんな風にテストを書いて……
ts
import { serialize, deserialize } from "./mod.ts";
const testObj = {
"A": 1,
"B": "B",
"C": [1, 2, 3],
"D": {
"d1": "D1",
"d2": "D2",
}
};
Deno.bench("Serialize (JSON)", () => {
JSON.stringify(testObj);
});
Deno.bench("Serialize (V)", () => {
serialize(testObj)
});
おもむろに
sh
$ deno bench
とすると、
voromoro@wsl:/home/voromoro/dev/ts/bench/serialise$ deno bench
cpu: Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
runtime: deno 1.30.3 (x86_64-unknown-linux-gnu)
file:/home/voromoro/dev/ts/serialise/mod_bench.ts
benchmark time (avg) (min … max) p75 p99 p995
---------------------------------------------------------- -----------------------------
Serialize (JSON) 1.03 µs/iter (527.97 ns … 2.05 µs) 1.26 µs 2.05 µs 2.05 µs
Serialize (V) 874.03 ns/iter (622.28 ns … 2.17 µs) 896.55 ns 2.17 µs 2.17 µs
ここまでやってくれる。
微に入り細を穿つべくちょっとしたコードのベンチマークを取ることが多いのだが、これを知ってからめちゃくちゃ便利に過ごしている。