This commit is contained in:
2025-05-28 02:28:20 -05:00
parent 3667d53eae
commit aa70dcbdc2
12 changed files with 122 additions and 45 deletions

View File

@@ -53,6 +53,11 @@ const libraries = [
////////////////////////////////////////////////////////////////////////////////
const benchmarks = [
{
name: "Empty object",
data: [{}, {}, {}, {}],
iterations: 10000
},
{
name: "Small Integers",
data: [0, 42, -1, 2023],
@@ -125,8 +130,8 @@ function runBenchmarkForLibrary(lib, bench) {
let encodeTime = measureTime(() => {
for (let i = 0; i < bench.iterations; i++) {
// For each data item, encode it
for (let d of bench.data) {
let e = lib.encode(d);
for (let j = 0; j < bench.data.length; j++) {
let e = lib.encode(bench.data[j]);
// store only in the very first iteration, so we can decode them later
// but do not store them every iteration or we blow up memory.
if (i === 0) {
@@ -171,8 +176,8 @@ for (let bench of benchmarks) {
let decOpsPerSec = (totalOps / decodeTime).toFixed(1);
console.log(` ${lib.name}:`);
console.log(` Encode time: ${encodeTime.toFixed(3)}s => ${encOpsPerSec} encodes/sec`);
console.log(` Decode time: ${decodeTime.toFixed(3)}s => ${decOpsPerSec} decodes/sec`);
console.log(` Encode time: ${encodeTime.toFixed(3)}s => ${encOpsPerSec} encodes/sec [${(encodeTime/bench.iterations)*1000000000} ns/try]`);
console.log(` Decode time: ${decodeTime.toFixed(3)}s => ${decOpsPerSec} decodes/sec [${(decodeTime/bench.iterations)*1000000000}/try]`);
console.log(` Total size: ${totalSize} bytes (or code units for JSON)`);
console.log("");
}
@@ -180,3 +185,5 @@ for (let bench of benchmarks) {
}
console.log("Benchmark complete.\n");
os.exit()