diff options
author | 2023-04-05 23:54:56 -0700 | |
---|---|---|
committer | 2023-04-05 23:54:56 -0700 | |
commit | 84a9fac3158c0b90151c4a154c94d89ac90aa11c (patch) | |
tree | 9d15da62937655319363e344edbcf6a1e181052d /src/string_mutable.zig | |
parent | 569d4940bb68cb47fa546b5505f5a326073d6c5c (diff) | |
download | bun-jarred/simdjson.tar.gz bun-jarred/simdjson.tar.zst bun-jarred/simdjson.zip |
experiment: add a direct SIMDJSON utf8 versionjarred/simdjson
benchmark time (avg) (min … max) p75 p99 p995
------------------------------------------------------------------------------ -----------------------------
• small object
------------------------------------------------------------------------------ -----------------------------
JSON.parse 656.38 ns/iter (621.56 ns … 788.83 ns) 665.85 ns 788.83 ns 788.83 ns
JSON.parse (SIMDJSON on-demand buffer) 743.61 ns/iter (720.6 ns … 833.83 ns) 745.12 ns 833.83 ns 833.83 ns
summary for small object
JSON.parse
1.13x faster than JSON.parse (SIMDJSON on-demand buffer)
• Array(4096) of true
------------------------------------------------------------------------------ -----------------------------
JSON.parse 45.42 µs/iter (42.79 µs … 1.91 ms) 44.79 µs 52.71 µs 56.54 µs
JSON.parse (SIMDJSON on-demand buffer) 38.65 µs/iter (35.33 µs … 1.44 ms) 38.58 µs 45.38 µs 50.17 µs
summary for Array(4096) of true
JSON.parse (SIMDJSON on-demand buffer)
1.18x faster than JSON.parse
• Array(4096) of 1234.567
------------------------------------------------------------------------------ -----------------------------
JSON.parse 100.79 µs/iter (96.42 µs … 962.79 µs) 100.08 µs 111.5 µs 115.38 µs
JSON.parse (SIMDJSON on-demand buffer) 62.12 µs/iter (58.13 µs … 751.96 µs) 62.75 µs 71.21 µs 75.96 µs
summary for Array(4096) of 1234.567
JSON.parse (SIMDJSON on-demand buffer)
1.62x faster than JSON.parse
• Array(4096) of 'hello'
------------------------------------------------------------------------------ -----------------------------
JSON.parse 142.44 µs/iter (132.75 µs … 1.38 ms) 141.33 µs 159.42 µs 169.54 µs
JSON.parse (SIMDJSON on-demand buffer) 196.67 µs/iter (130.54 µs … 1.9 ms) 203.5 µs 234.5 µs 407.46 µs
summary for Array(4096) of 'hello'
JSON.parse
1.38x faster than JSON.parse (SIMDJSON on-demand buffer)
• Array(4096) of 'hello'.repeat(1024)
------------------------------------------------------------------------------ -----------------------------
JSON.parse 9.8 ms/iter (9.07 ms … 11.26 ms) 10.19 ms 11.26 ms 11.26 ms
JSON.parse (SIMDJSON on-demand buffer) 6.39 ms/iter (5.9 ms … 9 ms) 6.74 ms 9 ms 9 ms
summary for Array(4096) of 'hello'.repeat(1024)
JSON.parse (SIMDJSON on-demand buffer)
1.53x faster than JSON.parse
• Array(4096) of {a: 123, b: 456}
------------------------------------------------------------------------------ -----------------------------
JSON.parse 310.68 µs/iter (297.96 µs … 1.14 ms) 308.25 µs 386.33 µs 752.25 µs
JSON.parse (SIMDJSON on-demand buffer) 413.16 µs/iter (398.67 µs … 1.13 ms) 411.88 µs 474.38 µs 717.29 µs
summary for Array(4096) of {a: 123, b: 456}
JSON.parse
1.33x faster than JSON.parse (SIMDJSON on-demand buffer)
Benchmark:
```js
import { bench, group, run } from "mitata";
function load(obj) {
const asStr = JSON.stringify(obj);
const buffer = Buffer.from(asStr);
bench("JSON.parse", () => {
return JSON.parse(asStr);
});
bench("JSON.parse (SIMDJSON on-demand buffer)", () => {
return buffer.json();
});
}
group("small object", () => {
var obj = {
a: 1,
b: 2,
c: null,
false: false,
true: true,
null: null,
foo: "bar",
arr: [1, 2, 3],
h: {
a: 1,
},
i: {
a: 1,
},
j: {},
// 100 more keys
k: {},
};
load(obj);
});
group("Array(4096) of true", () => {
var obj = Array(4096);
obj.length = 4096;
obj.fill(true);
load(obj);
});
group("Array(4096) of 1234.567", () => {
var obj = Array(4096);
obj.length = 4096;
obj.fill(1234.567);
load(obj);
});
group("Array(4096) of 'hello'", () => {
var obj = Array(4096);
obj.length = 4096;
obj.fill("hello");
load(obj);
});
group("Array(4096) of 'hello'.repeat(1024)", () => {
var obj = Array(4096);
obj.length = 4096;
obj.fill("hello".repeat(1024));
load(obj);
});
group("Array(4096) of {a: 123, b: 456}", () => {
var obj = Array(4096);
obj.length = 4096;
obj.fill({ a: 123, b: 456 });
load(obj);
});
run();
```
Diffstat (limited to 'src/string_mutable.zig')
0 files changed, 0 insertions, 0 deletions