Skip to content

Commit 4138ebf

Browse files
committedJun 12, 2023
chore: update benchmark script
1 parent 80554b8 commit 4138ebf

File tree

3 files changed

+78
-46
lines changed

3 files changed

+78
-46
lines changed
 

Diff for: ‎bench.cjs

-45
This file was deleted.

Diff for: ‎bench.mjs

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import fs from "node:fs";
2+
import Benchmark from "benchmark";
3+
import sjson from "secure-json-parse";
4+
import bourne from "@hapi/bourne";
5+
import { destr } from "destr";
6+
7+
const { log } = console;
8+
9+
function createSuite(name) {
10+
const suite = new Benchmark.Suite(name);
11+
12+
log(`\n=== ${name} ==`);
13+
suite.on("cycle", (event) => {
14+
log(String(event.target));
15+
});
16+
suite.on("complete", function () {
17+
log("Fastest is " + this.filter("fastest").map("name"));
18+
});
19+
20+
return suite;
21+
}
22+
23+
function bench(name, val) {
24+
const suite = createSuite(name);
25+
suite.add("JSON.parse", () => {
26+
JSON.parse(val);
27+
});
28+
suite.add("destr", () => {
29+
destr(val);
30+
});
31+
suite.add("destr (strict)", () => {
32+
destr(val, { strict: true });
33+
});
34+
suite.add("sjson", () => {
35+
sjson.parse(val);
36+
});
37+
suite.add("@hapi/bourne", () => {
38+
bourne.parse(val);
39+
});
40+
suite.run();
41+
}
42+
43+
function benchTryCatch(name, val) {
44+
const suite = createSuite(name);
45+
suite.add("JSON.parse (try-catch)", () => {
46+
try {
47+
JSON.parse(val);
48+
} catch (err) {
49+
return val;
50+
}
51+
});
52+
suite.add("destr", () => {
53+
destr(val);
54+
});
55+
suite.add("destr (strict)", () => {
56+
destr(val, { strict: true });
57+
});
58+
suite.add("sjson (try-catch)", () => {
59+
try {
60+
sjson.parse(val);
61+
} catch (err) {
62+
return val;
63+
}
64+
});
65+
suite.add("@hapi/bourne", () => {
66+
bourne.parse(val);
67+
});
68+
suite.run();
69+
}
70+
71+
bench("Non-string fallback", 3.14159265359);
72+
bench("Known values", "true");
73+
benchTryCatch("Plain string", `"SALAM"`);
74+
75+
const pkg = fs.readFileSync("./package.json", "utf-8");
76+
bench("standard object", pkg);
77+
benchTryCatch("invalid syntax", pkg.substring(0, pkg.length - 1));

Diff for: ‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"lib"
2121
],
2222
"scripts": {
23-
"bench": "pnpm build && node ./bench.cjs",
23+
"bench": "pnpm build && node ./bench.mjs",
2424
"build": "unbuild",
2525
"dev": "vitest dev",
2626
"lint": "eslint --ext .ts . && prettier -c src test",

0 commit comments

Comments
 (0)
Please sign in to comment.