From 263535ff4e8eb63bf51bb7ee537b88c15cc2694e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=AE=87=E7=BF=94?= Date: Tue, 27 Oct 2026 23:32:18 +0800 Subject: [PATCH 01/12] bench: add portable HTTP overhead benchmarks and reports --- .gitignore | 2 + CONTRIBUTING.md | 48 +++++++ benchmarks/fixture.mjs | 40 ++++++ benchmarks/load.mjs | 92 ++++++++++++++ benchmarks/report.mjs | 277 +++++++++++++++++++++++++++++++++++++++++ benchmarks/run.mjs | 208 +++++++++++++++++++++++++++++++ benchmarks/server.mjs | 134 ++++++++++++++++++++ 7 files changed, 801 insertions(+) create mode 100644 benchmarks/fixture.mjs create mode 100644 benchmarks/load.mjs create mode 100644 benchmarks/report.mjs create mode 100644 benchmarks/run.mjs create mode 100644 benchmarks/server.mjs diff --git a/.gitignore b/.gitignore index 70d93d7..8885d76 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,8 @@ coverage/ # 变异测试(Stryker) .stryker-tmp/ reports/ +# 本地性能评测数据与生成报告 +/benchmarks/results/ # 日志 *.log diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6c93870..7958d09 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,6 +31,54 @@ pnpm run build:packages 完整 PR 检查的定义以 [test.yml](.github/workflows/test.yml) 为准。 文档修改重点检查命令、示例和相对链接;无需为纯文字改动重复运行全部运行时测试。 +## HTTP 接入性能评测 + +`pnpm run bench` 测参数校验。比较接入 erest 前后的 HTTP 开销,先按上面的环境准备步骤 +安装依赖并构建核心包与适配器,再执行以下命令(macOS、Linux 均可): + +```bash +node benchmarks/run.mjs +node benchmarks/report.mjs benchmarks/results/latest.json +``` + +脚本对 Express、Koa、@leizm/web 分别比较原生路由、原生路由加同等 Zod 校验、erest, +覆盖无 schema 的 GET、带路径/query/body 校验的 POST,以及增加 5ms 异步等待的 POST。 +默认单并发与 50 并发、预热 1.5 秒、采样 3 秒、重复三轮,完整执行约需九分钟。 +报告包含吞吐、延迟分位数、客户端/服务端 CPU、内存快照和轮间波动。 + +macOS 本地复测可先聚焦 50 并发的 POST,增加预热和重复轮数(约需九分钟): + +```bash +BENCH_SCENARIOS=post BENCH_CONCURRENCY=50 \ + BENCH_ROUNDS=7 BENCH_MS=5000 BENCH_WARMUP_MS=3000 \ + BENCH_OUT=benchmarks/results/mac-post.json node benchmarks/run.mjs +node benchmarks/report.mjs benchmarks/results/mac-post.json +open benchmarks/results/mac-post.html +``` + +同一轮对照使用相同 Node 版本和 lockfile,尽量减少其他 CPU 密集任务。比较 Mac 和云端 +结果时,重点看各自环境中“原生 + Zod → erest”的相对变化、每请求 CPU 和轮间波动, +不要直接比较两台机器的绝对 QPS;客户端 CPU 接近饱和时,观察到的吞吐也可能受发压能力限制。 + +Linux 下可选用两个不同的、当前进程允许使用的 CPU 固定客户端和服务端;macOS 不设置 +`BENCH_SERVER_CPU`,由操作系统调度: + +```bash +BENCH_SERVER_CPU=0 taskset -c 1 node benchmarks/run.mjs +``` + +`BENCH_FRAMEWORKS=express`、`BENCH_SCENARIOS=post`、`BENCH_CONCURRENCY=50` 可筛选场景; +`BENCH_ROUNDS`、`BENCH_MS`、`BENCH_WARMUP_MS` 调整轮数和时长,`BENCH_OUT` 指定 JSON 输出。 +快速试跑只检查响应一致性和非法输入拒绝,不能用于性能结论: + +```bash +BENCH_ROUNDS=1 BENCH_MS=100 BENCH_WARMUP_MS=100 \ + BENCH_OUT=benchmarks/results/smoke.json node benchmarks/run.mjs +``` + +`benchmarks/results/` 下的 JSON、CSV 和 HTML 都是被忽略的本地生成物,不随工具提交。 +短测结果不是线上容量结论;只有在独立复测中出现一致趋势后,才适合讨论运行时优化。 + ## 合约专项 `test:contract` 在 Express、Koa、LeizmWeb 下执行同一套 GET/POST/PUT/PATCH/DELETE 定义。 diff --git a/benchmarks/fixture.mjs b/benchmarks/fixture.mjs new file mode 100644 index 0000000..f68556b --- /dev/null +++ b/benchmarks/fixture.mjs @@ -0,0 +1,40 @@ +import { z } from "zod"; + +export const schemas = { + params: z.object({ id: z.string().min(1) }), + query: z.object({ limit: z.coerce.number().int().min(1).max(100).default(10) }), + body: z.object({ + name: z.string().min(1).max(100), + age: z.number().int().min(0).max(150), + email: z.string().email(), + tags: z.array(z.string()).max(10), + address: z.object({ city: z.string(), zip: z.string() }), + }), +}; +export const payload = { + name: "Tom", + age: 25, + email: "tom@example.com", + tags: ["node", "typescript", "api"], + address: { city: "Shenzhen", zip: "518000" }, +}; +export const path = "/users/u123?limit=20"; +export function output(req) { + return { id: req.params.id, limit: Number(req.query.limit), ...req.body }; +} +export const expectedPost = output({ params: { id: "u123" }, query: { limit: 20 }, body: payload }); +export const expectedGet = { ok: true, message: "hello erest" }; + +export function validate(input) { + const result = {}; + for (const key of ["params", "query", "body"]) { + const parsed = schemas[key].safeParse(input[key]); + if (!parsed.success) { + const error = new Error("invalid input"); + error.status = 400; + throw error; + } + result[key] = parsed.data; + } + return result; +} diff --git a/benchmarks/load.mjs b/benchmarks/load.mjs new file mode 100644 index 0000000..9f229d2 --- /dev/null +++ b/benchmarks/load.mjs @@ -0,0 +1,92 @@ +import http from "node:http"; +import { performance } from "node:perf_hooks"; +import { payload, path } from "./fixture.mjs"; + +// Closed-loop HTTP/1.1 keep-alive, one outstanding request per connection. +// Separate client/server processes; report client CPU to expose generator limits. +// Includes full response consumption, but correctness is checked before timing. +export async function load(port, scenario, concurrency, durationMs) { + const agent = new http.Agent({ keepAlive: true, maxSockets: concurrency, maxFreeSockets: concurrency }); + const body = scenario === "get" ? undefined : JSON.stringify(payload); + const options = { + host: "127.0.0.1", + port, + agent, + method: body ? "POST" : "GET", + path: body ? path : "/ping", + headers: body + ? { + "content-type": "application/json", + "content-length": Buffer.byteLength(body), + } + : {}, + }; + // 1us histogram resolution through 2s; last bucket counts longer responses. + const histogram = new Uint32Array(2_000_001); + let count = 0, + errors = 0, + totalLatency = 0, + maxLatency = 0; + const cpuStart = process.cpuUsage(); + const start = performance.now(); + const deadline = start + durationMs; + await Promise.all( + Array.from( + { length: concurrency }, + () => + new Promise((resolve) => { + function next() { + if (performance.now() >= deadline) return resolve(); + const requestStart = performance.now(); + let finished = false; + function complete(failed) { + if (finished) return; + finished = true; + const latency = performance.now() - requestStart; + count++; + if (failed) errors++; + totalLatency += latency; + maxLatency = Math.max(maxLatency, latency); + histogram[Math.min(2_000_000, Math.floor(latency * 1000))]++; + next(); + } + const req = http.request(options, (res) => { + res.resume(); + res.once("end", () => complete(res.statusCode !== 200)); + res.once("error", () => complete(true)); + }); + req.setTimeout(5000, () => req.destroy(new Error("request timeout"))); + req.once("error", () => complete(true)); + req.end(body); + } + next(); + }) + ) + ); + const elapsedMs = performance.now() - start; + const cpu = process.cpuUsage(cpuStart); + agent.destroy(); + function percentile(p) { + const target = Math.ceil(count * p); + let n = 0; + for (let i = 0; i < histogram.length; i++) { + n += histogram[i]; + if (n >= target) return i / 1000; + } + return null; + } + return { + requests: count, + errors, + elapsedMs, + rps: (count * 1000) / elapsedMs, + latencyMs: { + mean: totalLatency / count, + p50: percentile(0.5), + p95: percentile(0.95), + p99: percentile(0.99), + max: maxLatency, + }, + clientCpuPercent: (cpu.user + cpu.system) / (elapsedMs * 10), + }; +} diff --git a/benchmarks/report.mjs b/benchmarks/report.mjs new file mode 100644 index 0000000..6836196 --- /dev/null +++ b/benchmarks/report.mjs @@ -0,0 +1,277 @@ +// node benchmarks/report.mjs benchmarks/results/2026-10-27.json +// Produces self-contained HTML plus summary JSON and CSV beside the raw samples. +import { readFileSync, writeFileSync } from "node:fs"; +import { resolve, basename } from "node:path"; +import assert from "node:assert/strict"; + +const input = resolve(process.argv[2] || "benchmarks/results/latest.json"); +const data = JSON.parse(readFileSync(input, "utf8")); +assert(data.finishedAt, "The benchmark is still running; do not publish a partial report."); +const median = (values) => { + const sorted = values.toSorted((a, b) => a - b); + const i = Math.floor(sorted.length / 2); + return sorted.length % 2 ? sorted[i] : (sorted[i - 1] + sorted[i]) / 2; +}; +const grouped = new Map(); +for (const sample of data.samples) { + const key = [sample.framework, sample.scenario, sample.concurrency, sample.mode].join("/"); + if (!grouped.has(key)) grouped.set(key, []); + grouped.get(key).push(sample); +} +const fields = { + rps: (s) => s.rps, + meanMs: (s) => s.latencyMs.mean, + p50Ms: (s) => s.latencyMs.p50, + p95Ms: (s) => s.latencyMs.p95, + p99Ms: (s) => s.latencyMs.p99, + serverCpuPercent: (s) => s.serverCpuPercent, + clientCpuPercent: (s) => s.clientCpuPercent, + cpuUsPerRequest: (s) => s.serverCpuUsPerRequest, + rssMiB: (s) => s.serverRssMiB, + retainedHeapMiB: (s) => s.serverRetainedHeapMiB, + idleRssMiB: (s) => s.idleRssMiB, +}; +const groups = [...grouped.values()].map((samples) => ({ + framework: samples[0].framework, + scenario: samples[0].scenario, + concurrency: samples[0].concurrency, + mode: samples[0].mode, + rounds: samples.length, + requests: samples.reduce((sum, s) => sum + s.requests, 0), + errors: samples.reduce((sum, s) => sum + s.errors, 0), + ...Object.fromEntries(Object.entries(fields).map(([name, getter]) => [name, median(samples.map(getter))])), + rpsMin: Math.min(...samples.map((s) => s.rps)), + rpsMax: Math.max(...samples.map((s) => s.rps)), + rpsByRound: samples.map((s) => ({ round: s.round, rps: s.rps })), +})); +const comparisons = []; +for (const erest of groups.filter((g) => g.mode === "erest")) { + for (const baseline of groups.filter( + (g) => + g.mode !== "erest" && + g.framework === erest.framework && + g.scenario === erest.scenario && + g.concurrency === erest.concurrency + )) { + const paired = erest.rpsByRound + .map((entry) => { + const base = baseline.rpsByRound.find((r) => r.round === entry.round); + return base ? (entry.rps / base.rps - 1) * 100 : null; + }) + .filter((v) => v !== null); + comparisons.push({ + framework: erest.framework, + scenario: erest.scenario, + concurrency: erest.concurrency, + baseline: baseline.mode, + throughputChangePercent: (erest.rps / baseline.rps - 1) * 100, + pairedChangePercent: { + median: median(paired), + min: Math.min(...paired), + max: Math.max(...paired), + values: paired, + }, + meanLatencyDeltaMs: erest.meanMs - baseline.meanMs, + p95DeltaMs: erest.p95Ms - baseline.p95Ms, + cpuDeltaUsPerRequest: erest.cpuUsPerRequest - baseline.cpuUsPerRequest, + retainedHeapDeltaMiB: erest.retainedHeapMiB - baseline.retainedHeapMiB, + rssDeltaMiB: erest.rssMiB - baseline.rssMiB, + }); + } +} +const summary = { input: basename(input), commit: data.commit, config: data.config, groups, comparisons }; +const prefix = input.replace(/\.json$/, ""); +writeFileSync(`${prefix}-summary.json`, `${JSON.stringify(summary, null, 2)}\n`); +const csvFields = Object.keys(groups[0]); +writeFileSync( + `${prefix}-summary.csv`, + [ + csvFields.join(","), + ...groups.map((g) => + csvFields + .map((key) => (typeof g[key] === "object" ? `"${JSON.stringify(g[key]).replaceAll('"', '""')}"` : g[key])) + .join(",") + ), + ].join("\n") + "\n" +); + +const escape = (value) => + String(value).replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """); +const n = (value, digits = 2) => + Number(value).toLocaleString("en-US", { minimumFractionDigits: digits, maximumFractionDigits: digits }); +const signed = (value, digits = 2) => `${value >= 0 ? "+" : ""}${n(value, digits)}`; +const label = { + get: "GET · 无 schema", + post: "POST · params + query + 嵌套 body", + io5: "POST · 同等校验 + 5ms 异步等待", +}; +const modes = { native: "原生 · 无校验", "native-zod": "原生 + Zod", erest: "erest" }; +const total = data.samples.reduce((sum, s) => sum + s.requests, 0); +const errors = data.samples.reduce((sum, s) => sum + s.errors, 0); +const table = (heads, rows) => + `
${heads.map((h) => ``).join("")}${rows.join("")}
${h}
`; +const row = (g, cells) => + `${cells.map((c) => `${c}`).join("")}`; +const comparisonTable = table( + [ + "框架", + "场景", + "并发", + "比较基线", + "吞吐变化", + "配对轮次变化范围", + "平均延迟变化 ms", + "P95 变化 ms", + "CPU 增量 μs/请求", + "GC 后堆增量 MiB", + ], + comparisons.map((c) => + row(c, [ + c.framework, + label[c.scenario], + c.concurrency, + modes[c.baseline], + `${signed(c.throughputChangePercent)}%`, + `${signed(c.pairedChangePercent.min)}% ~ ${signed(c.pairedChangePercent.max)}%`, + signed(c.meanLatencyDeltaMs, 3), + signed(c.p95DeltaMs, 3), + signed(c.cpuDeltaUsPerRequest), + signed(c.retainedHeapDeltaMiB), + ]) + ) +); +const detailTable = table( + [ + "框架", + "场景", + "并发", + "实现", + "req/s 中位数", + "req/s 范围", + "平均 ms", + "P50 ms", + "P95 ms", + "P99 ms", + "CPU μs/请求", + "服务端 CPU %", + "客户端 CPU %", + "RSS MiB", + "GC 后堆 MiB", + "错误", + ], + groups.map((g) => + row(g, [ + g.framework, + label[g.scenario], + g.concurrency, + modes[g.mode], + n(g.rps, 0), + `${n(g.rpsMin, 0)} ~ ${n(g.rpsMax, 0)}`, + n(g.meanMs, 3), + n(g.p50Ms, 3), + n(g.p95Ms, 3), + n(g.p99Ms, 3), + n(g.cpuUsPerRequest), + n(g.serverCpuPercent, 1), + n(g.clientCpuPercent, 1), + n(g.rssMiB), + n(g.retainedHeapMiB), + g.errors, + ]) + ) +); +const charts = data.config.frameworks + .map((framework) => { + const selected = groups.filter((g) => g.framework === framework && g.concurrency === 50 && g.scenario === "post"); + const max = Math.max(...selected.map((g) => g.rps)); + return `

${framework} · POST · 50 并发

${selected.map((g) => `
${modes[g.mode]}
${n(g.rps, 0)}
`).join("")}

单位 req/s;${data.config.rounds} 轮中位数,越高越好。

`; + }) + .join(""); + +const findings = comparisons + .filter((c) => c.scenario === "post" && c.concurrency === 50 && c.baseline === "native-zod") + .map( + (c) => + `
  • ${c.framework}:同等请求校验下,erest 吞吐变化 ${signed(c.throughputChangePercent)}%,` + + `每请求服务端 CPU 时间变化 ${signed(c.cpuDeltaUsPerRequest)} μs;平均延迟变化 ${signed(c.meanLatencyDeltaMs, 3)} ms。` + + (c.pairedChangePercent.min <= 0 && c.pairedChangePercent.max >= 0 + ? "配对轮次差异跨过零,尚不能确定稳定的吞吐变化方向。" + : `本次各配对轮次方向一致,但 ${data.config.rounds} 轮不足以给出统计显著性结论。`) + + "
  • " + ) + .join(""); +const ioFindings = comparisons + .filter((c) => c.scenario === "io5" && c.concurrency === 50) + .map((c) => `${c.framework} ${signed(c.throughputChangePercent)}%`) + .join(","); + +const shellQuote = (value) => "'" + String(value).replaceAll("'", "'\\''") + "'"; +const settings = [ + ["BENCH_FRAMEWORKS", data.config.frameworks.join(",")], + ["BENCH_SCENARIOS", data.config.scenarios.join(",")], + ["BENCH_CONCURRENCY", data.config.concurrency.join(",")], + ["BENCH_ROUNDS", data.config.rounds], + ["BENCH_MS", data.config.durationMs], + ["BENCH_WARMUP_MS", data.config.warmupMs], + ["BENCH_OUT", `benchmarks/results/${basename(input)}`], +] + .map(([name, value]) => `${name}=${shellQuote(value)}`) + .join(" "); +const command = `npm run build +npm run build --prefix packages/erest-express +npm run build --prefix packages/erest-koa +npm run build --prefix packages/erest-leizmweb + +# macOS / Linux:用本报告的场景、时长和轮数复测 +${settings} node benchmarks/run.mjs +node benchmarks/report.mjs ${shellQuote(`benchmarks/results/${basename(input)}`)} + +# Linux 可选 CPU 绑定;核心编号按本机允许列表调整 +BENCH_SERVER_CPU=${shellQuote(data.config.serverCpu ?? "0")} ${settings} taskset -c ${shellQuote(data.environment.clientAffinity ?? "1")} node benchmarks/run.mjs + +# 快速试跑(仅检查脚本,不用于性能结论) +BENCH_ROUNDS=1 BENCH_MS=100 BENCH_WARMUP_MS=100 BENCH_OUT=/tmp/erest-smoke.json node benchmarks/run.mjs`; +const html = `erest ${escape(data.environment.versions.erest)} 性能实测 + +

    erest 接入前后性能实测

    +

    完成时间 ${escape(data.finishedAt)} · erest ${escape(data.environment.versions.erest)} · commit ${escape(data.commit)}

    +
    ${data.samples.length}独立进程采样 · ${data.config.rounds} 轮重复
    ${n(total, 0)}计时区间 HTTP 请求
    ${errors}计时区间 HTTP / 网络错误
    +

    重点看“原生 + Zod → erest”:这衡量已有同等校验时的接入成本。“原生无校验 → erest”还包含新增参数校验的成本。具体差异见下表;接近轮间波动的差异不能当成稳定提升或回退。

    +

    典型 POST 的吞吐量

    ${charts}
    +

    本次观察

    +

    加入 5ms 异步等待后,同等校验基线下的吞吐变化为:${ioFindings || "本次未测"}。这只是固定等待模型;线上数据库、连接池和下游服务的瓶颈会改变结果。

    +

    从实现看,bind 阶段预组装校验函数和中间件链,但每个请求仍会创建 Context、Reply、分层校验结果、扁平参数和 registerTyped 的请求对象,并执行 Promise 调度。因此“预编译”不等于整个接入层零分配或零开销。后续优化可优先检查这些路径;本次没有做分配剖析或逐项优化实验,不能把实测差异拆分归因到某一项。

    +

    接入影响与原始指标

    +

    吞吐变化 = erest 吞吐中位数 ÷ 基线吞吐中位数 − 1;负值表示下降。配对范围按同轮次计算,不是置信区间。延迟是客户端从发起请求到读完响应的时间;50 并发时包含排队与调度,不能把延迟差当作纯 erest 执行时间。表内延迟分位数为各轮分位数的中位数,不是合并所有请求后的分位数。

    + + + +${comparisonTable}

    各组完整指标

    ${detailTable} +

    方法与边界

    +

    环境与复现

    ${escape(data.environment.cpu)} · ${escape(data.environment.node)} · ${escape(data.environment.os)}
    +cgroup CPU 配额 ${escape(data.environment.cpuMax ?? "未提供")};内存限额 ${escape(data.environment.memoryMax ?? "未提供")} 字节;服务端 CPU ${escape(data.config.serverCpu ?? "未固定")};客户端 CPU ${escape(data.environment.clientAffinity ?? "由操作系统调度")}。

    +
    ${escape(JSON.stringify(data.environment.versions, null, 2))}
    ${escape(command)}
    +

    可通过 BENCH_FRAMEWORKS、BENCH_SCENARIOS、BENCH_CONCURRENCY 筛选;BENCH_ROUNDS、BENCH_MS、BENCH_WARMUP_MS 调整重复次数和时长;BENCH_OUT 指定输出路径。默认完整运行约需 9 分钟(取决于机器)。CPU 绑定仅用于 Linux,需按机器允许的核心编号调整。

    +

    原始数据:${escape(basename(input))} · 汇总 CSV · 汇总 JSON。原始数据记录了采样脚本 SHA-256,便于核对复现版本。

    + +`; +writeFileSync(`${prefix}.html`, html); +console.log(`Report: ${prefix}.html`); +console.log( + JSON.stringify( + comparisons.filter((c) => c.concurrency === 50), + null, + 2 + ) +); diff --git a/benchmarks/run.mjs b/benchmarks/run.mjs new file mode 100644 index 0000000..364cc4d --- /dev/null +++ b/benchmarks/run.mjs @@ -0,0 +1,208 @@ +// Build first: npm run build; npm run build --prefix packages/erest-{express,koa,leizmweb} +// Full run: node benchmarks/run.mjs +// Smoke: BENCH_ROUNDS=1 BENCH_MS=100 BENCH_WARMUP_MS=100 node benchmarks/run.mjs +// Filter: BENCH_FRAMEWORKS=express BENCH_SCENARIOS=post BENCH_CONCURRENCY=50 ... +import { fork, execFileSync } from "node:child_process"; +import { once } from "node:events"; +import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import { resolve, dirname } from "node:path"; +import { fileURLToPath } from "node:url"; +import os from "node:os"; +import assert from "node:assert/strict"; +import { performance } from "node:perf_hooks"; +import { createHash } from "node:crypto"; +import { expectedGet, expectedPost, payload, path } from "./fixture.mjs"; +import { load } from "./load.mjs"; + +const root = resolve(dirname(fileURLToPath(import.meta.url)), ".."); +const list = (name, fallback) => (process.env[name] || fallback).split(","); +const config = { + frameworks: list("BENCH_FRAMEWORKS", "express,koa,leizmweb"), + scenarios: list("BENCH_SCENARIOS", "get,post,io5"), + concurrency: list("BENCH_CONCURRENCY", "1,50").map(Number), + rounds: Number(process.env.BENCH_ROUNDS || 3), + durationMs: Number(process.env.BENCH_MS || 3000), + warmupMs: Number(process.env.BENCH_WARMUP_MS || 1500), + serverCpu: process.env.BENCH_SERVER_CPU || null, +}; +assert(Number.isInteger(config.rounds) && config.rounds > 0, "BENCH_ROUNDS must be a positive integer"); +assert(Number.isFinite(config.durationMs) && config.durationMs > 0, "BENCH_MS must be positive and finite"); +assert(Number.isFinite(config.warmupMs) && config.warmupMs > 0, "BENCH_WARMUP_MS must be positive and finite"); +assert(config.concurrency.every((c) => Number.isInteger(c) && c > 0)); +assert( + config.frameworks.every((f) => ["express", "koa", "leizmweb"].includes(f)), + "Unknown BENCH_FRAMEWORKS value" +); +assert( + config.scenarios.every((s) => ["get", "post", "io5"].includes(s)), + "Unknown BENCH_SCENARIOS value" +); +assert(!config.serverCpu || process.platform === "linux", "BENCH_SERVER_CPU uses Linux taskset; omit it on macOS"); +const destination = resolve(root, process.env.BENCH_OUT || "benchmarks/results/latest.json"); +mkdirSync(dirname(destination), { recursive: true }); +function read(filePath) { + try { + return readFileSync(filePath, "utf8").trim(); + } catch { + return null; + } +} +function version(filePath) { + return JSON.parse(read(resolve(root, filePath))).version; +} +const result = { + startedAt: new Date().toISOString(), + commit: execFileSync("git", ["rev-parse", "HEAD"], { cwd: root, encoding: "utf8" }).trim(), + harnessSha256: Object.fromEntries( + ["fixture.mjs", "load.mjs", "server.mjs", "run.mjs"].map((name) => [ + name, + createHash("sha256") + .update(readFileSync(resolve(root, "benchmarks", name))) + .digest("hex"), + ]) + ), + environment: { + node: process.version, + os: `${os.type()} ${os.release()} ${os.arch()}`, + platform: os.platform(), + cpu: os.cpus()[0].model, + logicalCpus: os.cpus().length, + availableParallelism: os.availableParallelism(), + systemMemoryBytes: os.totalmem(), + cpuMax: read("/sys/fs/cgroup/cpu.max"), + memoryMax: read("/sys/fs/cgroup/memory.max"), + clientAffinity: read("/proc/self/status")?.match(/^Cpus_allowed_list:\s*(.+)$/m)?.[1], + versions: Object.fromEntries( + [ + "", + "packages/erest-express/", + "packages/erest-koa/", + "packages/erest-leizmweb/", + "node_modules/express/", + "node_modules/koa/", + "node_modules/koa-router/", + "node_modules/koa-bodyparser/", + "node_modules/@leizm/web/", + "node_modules/zod/", + ].map((p) => [p || "erest", version(`${p}package.json`)]) + ), + }, + config, + samples: [], +}; +function save() { + writeFileSync(destination, `${JSON.stringify(result, null, 2)}\n`); +} +function message(child, type, send) { + return new Promise((accept, reject) => { + const timer = setTimeout(() => done(new Error(`IPC timeout: ${type}`)), 15000); + function done(error, value) { + clearTimeout(timer); + child.off("message", received); + child.off("exit", exited); + child.off("error", done); + if (error) reject(error); + else accept(value); + } + function received(value) { + if (value.type === type) done(null, value); + } + function exited(code) { + done(new Error(`Server exited before ${type}: ${code}`)); + } + child.on("message", received); + child.once("exit", exited); + child.once("error", done); + if (send) child.send({ type: send }); + }); +} +async function sample(framework, scenario, concurrency, mode, round) { + const child = fork(resolve(root, "benchmarks/server.mjs"), [framework, mode, scenario], { + cwd: root, + ...(config.serverCpu + ? { execPath: "/usr/bin/taskset", execArgv: ["-c", config.serverCpu, process.execPath, "--expose-gc"] } + : { execArgv: ["--expose-gc"] }), + env: { ...process.env, NODE_ENV: "production", DEBUG: "" }, + stdio: ["ignore", "ignore", "inherit", "ipc"], + }); + try { + const ready = await message(child, "ready"); + const url = `http://127.0.0.1:${ready.port}`; + const options = + scenario === "get" + ? {} + : { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(payload) }; + const response = await fetch(url + (scenario === "get" ? "/ping" : path), options); + assert.equal(response.status, 200, "Unexpected preflight status"); + assert.deepEqual(await response.json(), scenario === "get" ? expectedGet : expectedPost); + // Verify that both validated paths actually reject bad input. + if (scenario !== "get" && mode !== "native") { + const invalid = await fetch(url + path, { ...options, body: JSON.stringify({ ...payload, age: "bad" }) }); + assert(invalid.status >= 400, "Validation did not reject invalid input"); + await invalid.arrayBuffer(); + } + await load(ready.port, scenario, concurrency, config.warmupMs); + await message(child, "started", "start"); + const client = await load(ready.port, scenario, concurrency, config.durationMs); + const server = await message(child, "stats", "stop"); + assert.equal(client.errors, 0, "Load generated HTTP/network errors"); + const measurement = { + framework, + scenario, + concurrency, + mode, + round, + ...client, + serverCpuPercent: (server.cpu.user + server.cpu.system) / (server.elapsedMs * 10), + serverCpuUsPerRequest: (server.cpu.user + server.cpu.system) / client.requests, + serverRssMiB: server.memory.rss / 2 ** 20, + serverRetainedHeapMiB: server.retainedMemory.heapUsed / 2 ** 20, + idleRssMiB: ready.idleMemory.rss / 2 ** 20, + server, + idleMemory: ready.idleMemory, + }; + result.samples.push(measurement); + save(); + console.log( + `${result.samples.length}: ${framework} ${scenario} c${concurrency} ${mode} r${round}: ` + + `${client.rps.toFixed(0)} req/s, p95 ${client.latencyMs.p95.toFixed(3)}ms, ` + + `server ${measurement.serverCpuPercent.toFixed(0)}% client ${client.clientCpuPercent.toFixed(0)}%` + ); + } finally { + if (child.exitCode === null && child.connected) { + const exited = once(child, "exit"); + child.send({ type: "close" }); + const timer = setTimeout(() => child.kill("SIGKILL"), 2000); + await exited; + clearTimeout(timer); + } + } +} + +const start = performance.now(); +save(); +// Rotate mode order each round, and framework order, to reduce temporal bias. +for (let round = 1; round <= config.rounds; round++) { + const offset = (round - 1) % config.frameworks.length; + for (const framework of [...config.frameworks.slice(offset), ...config.frameworks.slice(0, offset)]) { + for (const scenario of config.scenarios) { + const modes = + scenario === "get" + ? ["native", "erest"] + : scenario === "io5" + ? ["native-zod", "erest"] + : ["native", "native-zod", "erest"]; + for (const concurrency of config.concurrency) { + if (scenario === "io5" && concurrency === 1) continue; + const shift = (round - 1) % modes.length; + for (const mode of [...modes.slice(shift), ...modes.slice(0, shift)]) { + await sample(framework, scenario, concurrency, mode, round); + } + } + } + } +} +result.finishedAt = new Date().toISOString(); +result.elapsedSeconds = (performance.now() - start) / 1000; +save(); +console.log(`Saved ${result.samples.length} samples to ${destination}`); diff --git a/benchmarks/server.mjs b/benchmarks/server.mjs new file mode 100644 index 0000000..664fa93 --- /dev/null +++ b/benchmarks/server.mjs @@ -0,0 +1,134 @@ +// A fresh production-JS process is used for every sample. No ts-node/Vitest overhead. +import { createServer } from "node:http"; +import { performance } from "node:perf_hooks"; +import { setTimeout as delay } from "node:timers/promises"; +import { expectedGet, output, schemas, validate } from "./fixture.mjs"; + +const [framework, mode, scenario] = process.argv.slice(2); +const isGet = scenario === "get"; +const method = isGet ? "get" : "post"; +const route = isGet ? "/ping" : "/users/:id"; +const compute = (req) => (isGet ? expectedGet : output(req)); +const work = (req) => (scenario === "io5" ? delay(5).then(() => compute(req)) : compute(req)); +const checked = (req) => (mode === "native-zod" ? validate(req) : req); +let app, router, server, adapter; +const sendKoa = (ctx, result) => { + // Match the adapter's serialization and Content-Type behavior. + ctx.type = "application/json"; + ctx.body = JSON.stringify(result); +}; + +if (framework === "express") { + const { default: express } = await import("express"); + app = express(); + app.use(express.json()); + router = app; + server = createServer(app); + if (mode === "erest") { + const mod = await import("../packages/erest-express/dist/index.js"); + adapter = new mod.ExpressAdapter(); + } else { + router[method]( + route, + scenario === "io5" + ? async (req, res) => res.json(await work(checked(req))) + : (req, res) => res.json(compute(checked(req))) + ); + } +} else if (framework === "koa") { + const [{ default: Koa }, { default: Router }, { default: bodyParser }] = await Promise.all([ + import("koa"), + import("koa-router"), + import("koa-bodyparser"), + ]); + app = new Koa(); + app.silent = true; + router = new Router(); + app.use(bodyParser()); + if (mode === "erest") { + const mod = await import("../packages/erest-koa/dist/index.js"); + adapter = new mod.KoaAdapter(); + } else { + const input = (ctx) => checked({ params: ctx.params, query: ctx.query, body: ctx.request.body }); + router[method]( + route, + scenario === "io5" + ? async (ctx) => sendKoa(ctx, await work(input(ctx))) + : (ctx) => sendKoa(ctx, compute(input(ctx))) + ); + } + app.use(router.routes()); + server = createServer(app.callback()); +} else if (framework === "leizmweb") { + const { Application, Router, component } = await import("@leizm/web"); + app = new Application(); + router = new Router(); + app.use("/", component.bodyParser.json()); + if (mode === "erest") { + const mod = await import("../packages/erest-leizmweb/dist/index.js"); + adapter = new mod.LeizmWebAdapter(); + } else { + router[method]( + route, + scenario === "io5" + ? async (ctx) => ctx.response.json(await work(checked(ctx.request))) + : (ctx) => ctx.response.json(compute(checked(ctx.request))) + ); + } + app.use("/", router); + server = app.server; +} else { + throw new Error(`Unknown framework: ${framework}`); +} + +if (mode === "erest") { + const { ERest } = await import("../dist/lib/index.js"); + const service = new ERest({ info: { basePath: "" }, groups: { bench: "Benchmark" }, docs: { markdown: false } }); + const api = service.api[method](route).group("bench"); + if (isGet) api.register((ctx) => ctx.reply.json(expectedGet)); + else + api.registerTyped( + schemas, + scenario === "io5" + ? async (req, ctx) => ctx.reply.json(await work(req)) + : (req, ctx) => ctx.reply.json(compute(req)) + ); + service.bind({ adapter, router }); +} + +if (framework === "express") { + app.use((error, _req, res, _next) => + res.status(error.status || error.statusCode || 400).json({ error: error.message }) + ); +} + +await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); +global.gc?.(); +const idleMemory = process.memoryUsage(); +process.send({ type: "ready", port: server.address().port, idleMemory }); +let cpuStart, wallStart; +process.on("message", (message) => { + if (message.type === "start") { + // GC outside the measured interval; no forced GC during requests. + global.gc?.(); + cpuStart = process.cpuUsage(); + wallStart = performance.now(); + process.send({ type: "started" }); + } else if (message.type === "stop") { + const elapsedMs = performance.now() - wallStart; + const cpu = process.cpuUsage(cpuStart); + const memory = process.memoryUsage(); + global.gc?.(); + process.send({ + type: "stats", + elapsedMs, + cpu, + memory, + retainedMemory: process.memoryUsage(), + maxRssKiB: process.resourceUsage().maxRSS, + }); + } else if (message.type === "close") { + server.close(() => process.exit(0)); + server.closeAllConnections(); + } +}); From 6ec7a1d93c43b81ffcd7761d69fb2ac2dede5470 Mon Sep 17 00:00:00 2001 From: yourtion Date: Tue, 27 Oct 2026 23:44:01 +0800 Subject: [PATCH 02/12] bench: include H3 in HTTP overhead comparisons --- CONTRIBUTING.md | 6 +++--- benchmarks/report.mjs | 10 ++++------ benchmarks/run.mjs | 7 ++++--- benchmarks/server.mjs | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c02b871..147fdbd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,12 +42,12 @@ node benchmarks/run.mjs node benchmarks/report.mjs benchmarks/results/latest.json ``` -脚本对 Express、Koa、@leizm/web 分别比较原生路由、原生路由加同等 Zod 校验、erest, +脚本对 Express、Koa、@leizm/web、H3 分别比较原生路由、原生路由加同等 Zod 校验、erest, 覆盖无 schema 的 GET、带路径/query/body 校验的 POST,以及增加 5ms 异步等待的 POST。 -默认单并发与 50 并发、预热 1.5 秒、采样 3 秒、重复三轮,完整执行约需九分钟。 +默认单并发与 50 并发、预热 1.5 秒、采样 3 秒、重复三轮,完整执行约需十二分钟。 报告包含吞吐、延迟分位数、客户端/服务端 CPU、内存快照和轮间波动。 -macOS 本地复测可先聚焦 50 并发的 POST,增加预热和重复轮数(约需九分钟): +macOS 本地复测可先聚焦 50 并发的 POST,增加预热和重复轮数(四框架共 84 次采样,约需十二分钟): ```bash BENCH_SCENARIOS=post BENCH_CONCURRENCY=50 \ diff --git a/benchmarks/report.mjs b/benchmarks/report.mjs index 6836196..4a9935c 100644 --- a/benchmarks/report.mjs +++ b/benchmarks/report.mjs @@ -217,10 +217,8 @@ const settings = [ ] .map(([name, value]) => `${name}=${shellQuote(value)}`) .join(" "); -const command = `npm run build -npm run build --prefix packages/erest-express -npm run build --prefix packages/erest-koa -npm run build --prefix packages/erest-leizmweb +const command = `pnpm run build +pnpm run build:packages # macOS / Linux:用本报告的场景、时长和轮数复测 ${settings} node benchmarks/run.mjs @@ -253,7 +251,7 @@ ${comparisonTable}

    各组完整指标

    ${detailTab
  • 测量编译后的 ESM 产物,服务端 NODE_ENV=production、DEBUG 关闭;每次采样独立启动一个服务进程,客户端与服务端使用 HTTP/1.1 keep-alive,关闭流水线,每连接最多一个在途请求。客户端用 Node 原生 http 模块,不引入压测依赖。
  • 每组预热 ${data.config.warmupMs / 1000} 秒,采样 ${data.config.durationMs / 1000} 秒,重复 ${data.config.rounds} 轮。每轮轮换框架顺序和实现顺序;逐次执行,避免多组压测争抢资源。每个计时区间结束时排空在途请求,RPS 使用实际耗时。
  • GET 返回固定 JSON,无 schema;POST 校验路径 id、query 的数字转换/默认值、body 的字符串/整数/email/数组/嵌套对象。原生 + Zod 使用相同 schema.safeParse;erest POST 使用 registerTyped。模拟 I/O 的场景在同一 POST 逻辑中额外等待 setTimeout(5),不是实际数据库或远程服务。
  • -
  • 原生基线使用框架路由和 JSON body parser,erest 组使用同一套中间件;响应 JSON 内容通过预检核对,非法 age 在校验组必须被拒绝。Koa 基线显式按适配器行为进行 JSON.stringify 和 Content-Type 设置。计时区间仅发送合法请求;不包含错误路径性能评测。
  • +
  • 原生基线使用框架路由和 JSON body parser,erest 组使用同一套中间件;H3 两组均使用 readBody,并通过 h3/node 的 toNodeHandler 接收真实 HTTP 请求。响应 JSON 内容通过预检核对,非法 age 在校验组必须被拒绝。Koa 与 H3 基线显式按适配器行为进行 JSON.stringify 和 Content-Type 设置。计时区间仅发送合法请求;不包含错误路径性能评测。
  • 未开启 hooks、response schema、信封包装、文档生成、日志、数据库或鉴权。文档生成不进入本次请求热路径;本报告不能说明这些可选功能的性能。每个应用仅注册一个路由,不测大量路由匹配、不同 body 大小或启动时间。
  • CPU μs/请求来自服务进程 user+system CPU 时间,包含框架、GC 和 JIT 的成本,独立于客户端 CPU。CPU 100% 为一个逻辑核。客户端 CPU 接近 100% 时,吞吐可能受发压能力限制,不能视为服务端容量上限。
  • RSS 是压测结束时快照,GC 后堆是在结束计时后强制 GC 得到的存活堆;服务进程开始测量前也会 GC,计时期间不主动 GC。RSS 包含 V8、JIT、原生内存,不等于逐请求分配量;短测不能证明是否存在内存泄漏。所有组的 fixture 都加载 Zod,因此无校验基线不是最小依赖部署的总内存。
  • @@ -262,7 +260,7 @@ ${comparisonTable}

    各组完整指标

    ${detailTab

    环境与复现

    ${escape(data.environment.cpu)} · ${escape(data.environment.node)} · ${escape(data.environment.os)}
    cgroup CPU 配额 ${escape(data.environment.cpuMax ?? "未提供")};内存限额 ${escape(data.environment.memoryMax ?? "未提供")} 字节;服务端 CPU ${escape(data.config.serverCpu ?? "未固定")};客户端 CPU ${escape(data.environment.clientAffinity ?? "由操作系统调度")}。

    ${escape(JSON.stringify(data.environment.versions, null, 2))}
    ${escape(command)}
    -

    可通过 BENCH_FRAMEWORKS、BENCH_SCENARIOS、BENCH_CONCURRENCY 筛选;BENCH_ROUNDS、BENCH_MS、BENCH_WARMUP_MS 调整重复次数和时长;BENCH_OUT 指定输出路径。默认完整运行约需 9 分钟(取决于机器)。CPU 绑定仅用于 Linux,需按机器允许的核心编号调整。

    +

    可通过 BENCH_FRAMEWORKS、BENCH_SCENARIOS、BENCH_CONCURRENCY 筛选;BENCH_ROUNDS、BENCH_MS、BENCH_WARMUP_MS 调整重复次数和时长;BENCH_OUT 指定输出路径。默认四框架完整运行约需 12 分钟(取决于机器)。CPU 绑定仅用于 Linux,需按机器允许的核心编号调整。

    原始数据:${escape(basename(input))} · 汇总 CSV · 汇总 JSON。原始数据记录了采样脚本 SHA-256,便于核对复现版本。

    `; diff --git a/benchmarks/run.mjs b/benchmarks/run.mjs index 364cc4d..96b19d2 100644 --- a/benchmarks/run.mjs +++ b/benchmarks/run.mjs @@ -1,4 +1,4 @@ -// Build first: npm run build; npm run build --prefix packages/erest-{express,koa,leizmweb} +// Build first: pnpm run build && pnpm run build:packages // Full run: node benchmarks/run.mjs // Smoke: BENCH_ROUNDS=1 BENCH_MS=100 BENCH_WARMUP_MS=100 node benchmarks/run.mjs // Filter: BENCH_FRAMEWORKS=express BENCH_SCENARIOS=post BENCH_CONCURRENCY=50 ... @@ -17,7 +17,7 @@ import { load } from "./load.mjs"; const root = resolve(dirname(fileURLToPath(import.meta.url)), ".."); const list = (name, fallback) => (process.env[name] || fallback).split(","); const config = { - frameworks: list("BENCH_FRAMEWORKS", "express,koa,leizmweb"), + frameworks: list("BENCH_FRAMEWORKS", "express,koa,leizmweb,h3"), scenarios: list("BENCH_SCENARIOS", "get,post,io5"), concurrency: list("BENCH_CONCURRENCY", "1,50").map(Number), rounds: Number(process.env.BENCH_ROUNDS || 3), @@ -30,7 +30,7 @@ assert(Number.isFinite(config.durationMs) && config.durationMs > 0, "BENCH_MS mu assert(Number.isFinite(config.warmupMs) && config.warmupMs > 0, "BENCH_WARMUP_MS must be positive and finite"); assert(config.concurrency.every((c) => Number.isInteger(c) && c > 0)); assert( - config.frameworks.every((f) => ["express", "koa", "leizmweb"].includes(f)), + config.frameworks.every((f) => ["express", "koa", "leizmweb", "h3"].includes(f)), "Unknown BENCH_FRAMEWORKS value" ); assert( @@ -84,6 +84,7 @@ const result = { "node_modules/koa-bodyparser/", "node_modules/@leizm/web/", "node_modules/zod/", + ...(config.frameworks.includes("h3") ? ["packages/erest-h3/", "node_modules/h3/"] : []), ].map((p) => [p || "erest", version(`${p}package.json`)]) ), }, diff --git a/benchmarks/server.mjs b/benchmarks/server.mjs index 664fa93..0bd9811 100644 --- a/benchmarks/server.mjs +++ b/benchmarks/server.mjs @@ -77,6 +77,38 @@ if (framework === "express") { } app.use("/", router); server = app.server; +} else if (framework === "h3") { + const [{ H3, getQuery, getRouterParams, readBody }, { toNodeHandler }] = await Promise.all([ + import("h3"), + import("h3/node"), + ]); + app = new H3({ silent: true }); + router = app; + if (mode === "erest") { + const mod = await import("../packages/erest-h3/dist/index.js"); + adapter = new mod.H3Adapter(); + } else { + const send = (event, result) => { + // Match the adapter's serialization and Content-Type behavior. + event.res.headers.set("content-type", "application/json; charset=utf-8"); + return JSON.stringify(result); + }; + router.on( + method.toUpperCase(), + route, + isGet + ? (event) => send(event, expectedGet) + : async (event) => { + const input = checked({ + params: getRouterParams(event, { decode: true }), + query: getQuery(event), + body: (await readBody(event)) ?? {}, + }); + return send(event, scenario === "io5" ? await work(input) : compute(input)); + } + ); + } + server = createServer(toNodeHandler(app)); } else { throw new Error(`Unknown framework: ${framework}`); } From aa9f7af3c786009df501213d2e58f3c0821583df Mon Sep 17 00:00:00 2001 From: yourtion Date: Tue, 27 Oct 2026 23:56:15 +0800 Subject: [PATCH 03/12] bench: record Mac POST overhead results for four frameworks --- benchmarks/results/mac-post.json | 4593 ++++++++++++++++++++++++++++++ 1 file changed, 4593 insertions(+) create mode 100644 benchmarks/results/mac-post.json diff --git a/benchmarks/results/mac-post.json b/benchmarks/results/mac-post.json new file mode 100644 index 0000000..6e2f5c4 --- /dev/null +++ b/benchmarks/results/mac-post.json @@ -0,0 +1,4593 @@ +{ + "startedAt": "2026-10-27T15:44:13.785Z", + "commit": "6ec7a1d93c43b81ffcd7761d69fb2ac2dede5470", + "harnessSha256": { + "fixture.mjs": "064fd8eb68b46d1b567bbea84b7655948def3687c5f9e68438c1bfdc511259e1", + "load.mjs": "ce51b4f707385179b4c69bfda7babe2534083005280e9819ddd207f97dafda5a", + "server.mjs": "45233296ea80835e9b5a7b17059d0e27d847976bc77161ec07ecf348104a1dcd", + "run.mjs": "2da2da4ff2a006f584c996e47404327b6beaf879fe30a582a2aca69e1d4a93e0" + }, + "environment": { + "node": "v24.22.1", + "os": "Darwin 27.2.0 arm64", + "platform": "darwin", + "cpu": "Apple M2", + "logicalCpus": 8, + "availableParallelism": 8, + "systemMemoryBytes": 17179869184, + "cpuMax": null, + "memoryMax": null, + "versions": { + "erest": "3.4.0", + "packages/erest-express/": "3.4.0", + "packages/erest-koa/": "3.4.0", + "packages/erest-leizmweb/": "3.4.0", + "node_modules/express/": "5.2.1", + "node_modules/koa/": "3.0.0", + "node_modules/koa-router/": "13.1.1", + "node_modules/koa-bodyparser/": "4.4.1", + "node_modules/@leizm/web/": "2.7.3", + "node_modules/zod/": "4.4.3", + "packages/erest-h3/": "3.4.0", + "node_modules/h3/": "2.0.8" + } + }, + "config": { + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "scenarios": [ + "post" + ], + "concurrency": [ + 50 + ], + "rounds": 7, + "durationMs": 5000, + "warmupMs": 3000, + "serverCpu": null + }, + "samples": [ + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 1, + "requests": 182111, + "errors": 0, + "elapsedMs": 5001.429542000001, + "rps": 36411.78956350475, + "latencyMs": { + "mean": 1.3727588616832536, + "p50": 1.316, + "p95": 1.546, + "p99": 2.648, + "max": 8.232792000000245 + }, + "clientCpuPercent": 91.3568603062408, + "serverCpuPercent": 104.34635369566111, + "serverCpuUsPerRequest": 28.66166239271653, + "serverRssMiB": 119.59375, + "serverRetainedHeapMiB": 13.760223388671875, + "idleRssMiB": 81.59375, + "server": { + "type": "stats", + "elapsedMs": 5002.191083, + "cpu": { + "user": 4249725, + "system": 969879 + }, + "memory": { + "rss": 125403136, + "heapTotal": 39944192, + "heapUsed": 22184184, + "external": 4245525, + "arrayBuffers": 357642 + }, + "retainedMemory": { + "rss": 125419520, + "heapTotal": 37322752, + "heapUsed": 14428640, + "external": 4245525, + "arrayBuffers": 277690 + }, + "maxRssKiB": 122480 + }, + "idleMemory": { + "rss": 85557248, + "heapTotal": 31555584, + "heapUsed": 12361968, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 164512, + "errors": 0, + "elapsedMs": 5001.457833999999, + "rps": 32892.80954877686, + "latencyMs": { + "mean": 1.5196738502905471, + "p50": 1.463, + "p95": 1.688, + "p99": 2.919, + "max": 6.468374999998559 + }, + "clientCpuPercent": 82.4259673244703, + "serverCpuPercent": 104.4141893461841, + "serverCpuUsPerRequest": 31.75125826687415, + "serverRssMiB": 121.65625, + "serverRetainedHeapMiB": 14.041633605957031, + "idleRssMiB": 81.59375, + "server": { + "type": "stats", + "elapsedMs": 5002.637124999999, + "cpu": { + "user": 4304698, + "system": 918765 + }, + "memory": { + "rss": 127565824, + "heapTotal": 39419904, + "heapUsed": 25519008, + "external": 4344653, + "arrayBuffers": 456770 + }, + "retainedMemory": { + "rss": 127729664, + "heapTotal": 38633472, + "heapUsed": 14723720, + "external": 4344653, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124736 + }, + "idleMemory": { + "rss": 85557248, + "heapTotal": 31293440, + "heapUsed": 12363840, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 156953, + "errors": 0, + "elapsedMs": 5001.527332999998, + "rps": 31381.014148303577, + "latencyMs": { + "mean": 1.5928683577886138, + "p50": 1.537, + "p95": 1.907, + "p99": 3.081, + "max": 6.412250000001222 + }, + "clientCpuPercent": 78.55996255534212, + "serverCpuPercent": 104.37932238922829, + "serverCpuUsPerRequest": 33.269443718820284, + "serverRssMiB": 220.890625, + "serverRetainedHeapMiB": 15.656532287597656, + "idleRssMiB": 85.953125, + "server": { + "type": "stats", + "elapsedMs": 5002.656542, + "cpu": { + "user": 4317470, + "system": 904269 + }, + "memory": { + "rss": 231620608, + "heapTotal": 157908992, + "heapUsed": 47001208, + "external": 4676605, + "arrayBuffers": 710786 + }, + "retainedMemory": { + "rss": 231211008, + "heapTotal": 156598272, + "heapUsed": 16417064, + "external": 4676605, + "arrayBuffers": 277690 + }, + "maxRssKiB": 226304 + }, + "idleMemory": { + "rss": 90128384, + "heapTotal": 33390592, + "heapUsed": 14019096, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 1, + "requests": 223352, + "errors": 0, + "elapsedMs": 5001.085666999999, + "rps": 44660.70266978293, + "latencyMs": { + "mean": 1.1192465858420773, + "p50": 1.06, + "p95": 1.708, + "p99": 2.147, + "max": 19.33366599999863 + }, + "clientCpuPercent": 99.1904224463268, + "serverCpuPercent": 105.04185125722444, + "serverCpuUsPerRequest": 23.523353271965327, + "serverRssMiB": 113.359375, + "serverRetainedHeapMiB": 13.743667602539062, + "idleRssMiB": 81.796875, + "server": { + "type": "stats", + "elapsedMs": 5001.804459000001, + "cpu": { + "user": 4071773, + "system": 1182215 + }, + "memory": { + "rss": 118865920, + "heapTotal": 33914880, + "heapUsed": 19807744, + "external": 4212661, + "arrayBuffers": 307763 + }, + "retainedMemory": { + "rss": 118865920, + "heapTotal": 33914880, + "heapUsed": 14411280, + "external": 4212661, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116080 + }, + "idleMemory": { + "rss": 85770240, + "heapTotal": 31555584, + "heapUsed": 12356928, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 204455, + "errors": 0, + "elapsedMs": 5001.166333000001, + "rps": 40881.46371995501, + "latencyMs": { + "mean": 1.222736304966856, + "p50": 1.165, + "p95": 1.484, + "p99": 2.355, + "max": 4.885749999994005 + }, + "clientCpuPercent": 95.01187690251531, + "serverCpuPercent": 104.88981131892527, + "serverCpuUsPerRequest": 25.661363136142427, + "serverRssMiB": 115.15625, + "serverRetainedHeapMiB": 13.962860107421875, + "idleRssMiB": 81.859375, + "server": { + "type": "stats", + "elapsedMs": 5002.005375, + "cpu": { + "user": 4219779, + "system": 1026815 + }, + "memory": { + "rss": 120750080, + "heapTotal": 34439168, + "heapUsed": 22328040, + "external": 4223269, + "arrayBuffers": 318371 + }, + "retainedMemory": { + "rss": 120799232, + "heapTotal": 34439168, + "heapUsed": 14641120, + "external": 4223269, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117968 + }, + "idleMemory": { + "rss": 85835776, + "heapTotal": 31555584, + "heapUsed": 12356848, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 199656, + "errors": 0, + "elapsedMs": 5001.201249999998, + "rps": 39921.608833477774, + "latencyMs": { + "mean": 1.2521149202528172, + "p50": 1.188, + "p95": 1.622, + "p99": 2.43, + "max": 6.562374999994063 + }, + "clientCpuPercent": 93.9618656617748, + "serverCpuPercent": 105.32543030667199, + "serverCpuUsPerRequest": 26.386770244821093, + "serverRssMiB": 118.5625, + "serverRetainedHeapMiB": 15.628593444824219, + "idleRssMiB": 86.734375, + "server": { + "type": "stats", + "elapsedMs": 5001.904084, + "cpu": { + "user": 4264121, + "system": 1004156 + }, + "memory": { + "rss": 124321792, + "heapTotal": 36012032, + "heapUsed": 22610080, + "external": 4272358, + "arrayBuffers": 306539 + }, + "retainedMemory": { + "rss": 124354560, + "heapTotal": 36012032, + "heapUsed": 16387768, + "external": 4272358, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121440 + }, + "idleMemory": { + "rss": 90947584, + "heapTotal": 33128448, + "heapUsed": 13959120, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 1, + "requests": 221530, + "errors": 0, + "elapsedMs": 5001.159333999996, + "rps": 44295.72929099567, + "latencyMs": { + "mean": 1.12844304347039, + "p50": 1.071, + "p95": 1.432, + "p99": 2.166, + "max": 5.333041999998386 + }, + "clientCpuPercent": 98.75722147907882, + "serverCpuPercent": 104.41942377816582, + "serverCpuUsPerRequest": 23.57655396560285, + "serverRssMiB": 121.578125, + "serverRetainedHeapMiB": 15.368576049804688, + "idleRssMiB": 84.625, + "server": { + "type": "stats", + "elapsedMs": 5001.860584, + "cpu": { + "user": 4072260, + "system": 1150654 + }, + "memory": { + "rss": 127483904, + "heapTotal": 40747008, + "heapUsed": 27319696, + "external": 4240292, + "arrayBuffers": 312115 + }, + "retainedMemory": { + "rss": 127516672, + "heapTotal": 39960576, + "heapUsed": 16115120, + "external": 4240292, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124528 + }, + "idleMemory": { + "rss": 88735744, + "heapTotal": 33406976, + "heapUsed": 14158368, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 206036, + "errors": 0, + "elapsedMs": 5001.209833000001, + "rps": 41197.23164592921, + "latencyMs": { + "mean": 1.2133394802704525, + "p50": 1.164, + "p95": 1.375, + "p99": 2.35, + "max": 6.677290999999968 + }, + "clientCpuPercent": 95.13470057995863, + "serverCpuPercent": 104.27657456885969, + "serverCpuUsPerRequest": 25.314614921664177, + "serverRssMiB": 122.46875, + "serverRetainedHeapMiB": 15.662879943847656, + "idleRssMiB": 84.8125, + "server": { + "type": "stats", + "elapsedMs": 5001.815625, + "cpu": { + "user": 4183358, + "system": 1032364 + }, + "memory": { + "rss": 128417792, + "heapTotal": 40747008, + "heapUsed": 25005744, + "external": 4219892, + "arrayBuffers": 291715 + }, + "retainedMemory": { + "rss": 128434176, + "heapTotal": 39960576, + "heapUsed": 16423720, + "external": 4219892, + "arrayBuffers": 277690 + }, + "maxRssKiB": 125424 + }, + "idleMemory": { + "rss": 88932352, + "heapTotal": 33669120, + "heapUsed": 14159224, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 186889, + "errors": 0, + "elapsedMs": 5001.346749999997, + "rps": 37367.73500057762, + "latencyMs": { + "mean": 1.3376808314025947, + "p50": 1.296, + "p95": 1.45, + "p99": 2.595, + "max": 12.733958999990136 + }, + "clientCpuPercent": 89.80609072946207, + "serverCpuPercent": 103.46740678435863, + "serverCpuUsPerRequest": 27.692662489499114, + "serverRssMiB": 140.015625, + "serverRetainedHeapMiB": 17.293617248535156, + "idleRssMiB": 88.390625, + "server": { + "type": "stats", + "elapsedMs": 5002.013833000001, + "cpu": { + "user": 4132267, + "system": 1043187 + }, + "memory": { + "rss": 146817024, + "heapTotal": 59359232, + "heapUsed": 31831648, + "external": 4379805, + "arrayBuffers": 390707 + }, + "retainedMemory": { + "rss": 146849792, + "heapTotal": 57524224, + "heapUsed": 18133672, + "external": 4379805, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143408 + }, + "idleMemory": { + "rss": 92684288, + "heapTotal": 35766272, + "heapUsed": 15776840, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 1, + "requests": 238103, + "errors": 0, + "elapsedMs": 5000.59145800001, + "rps": 47614.96754930455, + "latencyMs": { + "mean": 1.0498389779423463, + "p50": 1.002, + "p95": 1.42, + "p99": 2.025, + "max": 6.116208000006736 + }, + "clientCpuPercent": 100.40780260037772, + "serverCpuPercent": 102.00444938820557, + "serverCpuUsPerRequest": 21.42586191690151, + "serverRssMiB": 109.015625, + "serverRetainedHeapMiB": 11.713714599609375, + "idleRssMiB": 74.609375, + "server": { + "type": "stats", + "elapsedMs": 5001.313208, + "cpu": { + "user": 3701804, + "system": 1399758 + }, + "memory": { + "rss": 114311168, + "heapTotal": 31473664, + "heapUsed": 19487144, + "external": 4234925, + "arrayBuffers": 336531 + }, + "retainedMemory": { + "rss": 114311168, + "heapTotal": 31473664, + "heapUsed": 12282720, + "external": 4234925, + "arrayBuffers": 277690 + }, + "maxRssKiB": 111632 + }, + "idleMemory": { + "rss": 78233600, + "heapTotal": 20725760, + "heapUsed": 10622640, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 234261, + "errors": 0, + "elapsedMs": 5000.720207999999, + "rps": 46845.45230609712, + "latencyMs": { + "mean": 1.0670843605124223, + "p50": 0.924, + "p95": 1.795, + "p99": 1.942, + "max": 10.245332999998936 + }, + "clientCpuPercent": 100.13193683560712, + "serverCpuPercent": 104.28500610071463, + "serverCpuUsPerRequest": 22.264764514793328, + "serverRssMiB": 111.5, + "serverRetainedHeapMiB": 11.9759521484375, + "idleRssMiB": 75.453125, + "server": { + "type": "stats", + "elapsedMs": 5001.453416, + "cpu": { + "user": 3948288, + "system": 1267478 + }, + "memory": { + "rss": 116916224, + "heapTotal": 31997952, + "heapUsed": 19178632, + "external": 4221509, + "arrayBuffers": 323115 + }, + "retainedMemory": { + "rss": 116965376, + "heapTotal": 31997952, + "heapUsed": 12557696, + "external": 4221509, + "arrayBuffers": 277690 + }, + "maxRssKiB": 114224 + }, + "idleMemory": { + "rss": 79118336, + "heapTotal": 20987904, + "heapUsed": 10622672, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 212623, + "errors": 0, + "elapsedMs": 5001.1313329999975, + "rps": 42514.980279963005, + "latencyMs": { + "mean": 1.1756986696406566, + "p50": 1.121, + "p95": 1.358, + "p99": 2.258, + "max": 6.53595900000073 + }, + "clientCpuPercent": 96.71841585288763, + "serverCpuPercent": 104.34088864617844, + "serverCpuUsPerRequest": 24.545646519896717, + "serverRssMiB": 113.875, + "serverRetainedHeapMiB": 13.763381958007812, + "idleRssMiB": 80.484375, + "server": { + "type": "stats", + "elapsedMs": 5001.844499999999, + "cpu": { + "user": 4098010, + "system": 1120959 + }, + "memory": { + "rss": 119406592, + "heapTotal": 34095104, + "heapUsed": 15593696, + "external": 4266805, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119537664, + "heapTotal": 33832960, + "heapUsed": 14431952, + "external": 4266805, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116736 + }, + "idleMemory": { + "rss": 84393984, + "heapTotal": 31211520, + "heapUsed": 12355456, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 204768, + "errors": 0, + "elapsedMs": 5001.220125000007, + "rps": 40943.608735878166, + "latencyMs": { + "mean": 1.220854919831243, + "p50": 1.169, + "p95": 1.455, + "p99": 2.354, + "max": 6.182958999997936 + }, + "clientCpuPercent": 94.72674430622054, + "serverCpuPercent": 104.9736482786357, + "serverCpuUsPerRequest": 25.641970425066418, + "serverRssMiB": 115.03125, + "serverRetainedHeapMiB": 14.008010864257812, + "idleRssMiB": 81.40625, + "server": { + "type": "stats", + "elapsedMs": 5001.8791249999995, + "cpu": { + "user": 4188495, + "system": 1062160 + }, + "memory": { + "rss": 120619008, + "heapTotal": 34439168, + "heapUsed": 17393888, + "external": 4192397, + "arrayBuffers": 287499 + }, + "retainedMemory": { + "rss": 120668160, + "heapTotal": 34701312, + "heapUsed": 14688464, + "external": 4192397, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117840 + }, + "idleMemory": { + "rss": 85360640, + "heapTotal": 31555584, + "heapUsed": 12357064, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 202584, + "errors": 0, + "elapsedMs": 5001.227541999993, + "rps": 40506.8552267843, + "latencyMs": { + "mean": 1.2340100090135568, + "p50": 1.181, + "p95": 1.462, + "p99": 2.387, + "max": 13.259208000003127 + }, + "clientCpuPercent": 94.10345681088401, + "serverCpuPercent": 105.13979799252226, + "serverCpuUsPerRequest": 25.961028511629745, + "serverRssMiB": 119.03125, + "serverRetainedHeapMiB": 15.488807678222656, + "idleRssMiB": 86.5625, + "server": { + "type": "stats", + "elapsedMs": 5002.186708, + "cpu": { + "user": 4210365, + "system": 1048924 + }, + "memory": { + "rss": 124813312, + "heapTotal": 36798464, + "heapUsed": 18865584, + "external": 4250598, + "arrayBuffers": 284779 + }, + "retainedMemory": { + "rss": 124813312, + "heapTotal": 36274176, + "heapUsed": 16241192, + "external": 4250598, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121888 + }, + "idleMemory": { + "rss": 90767360, + "heapTotal": 33652736, + "heapUsed": 13957432, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 2, + "requests": 222676, + "errors": 0, + "elapsedMs": 5001.111917000002, + "rps": 44525.29831277517, + "latencyMs": { + "mean": 1.1226716233630787, + "p50": 1.068, + "p95": 1.502, + "p99": 2.164, + "max": 5.284333000003244 + }, + "clientCpuPercent": 98.7650762865341, + "serverCpuPercent": 104.81597201793953, + "serverCpuUsPerRequest": 23.543848461441737, + "serverRssMiB": 112.96875, + "serverRetainedHeapMiB": 13.791107177734375, + "idleRssMiB": 81.90625, + "server": { + "type": "stats", + "elapsedMs": 5001.766333, + "cpu": { + "user": 4074230, + "system": 1168420 + }, + "memory": { + "rss": 118456320, + "heapTotal": 34177024, + "heapUsed": 18796224, + "external": 4205181, + "arrayBuffers": 300283 + }, + "retainedMemory": { + "rss": 118456320, + "heapTotal": 34177024, + "heapUsed": 14461024, + "external": 4205181, + "arrayBuffers": 277690 + }, + "maxRssKiB": 115680 + }, + "idleMemory": { + "rss": 85884928, + "heapTotal": 31817728, + "heapUsed": 12358024, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 204878, + "errors": 0, + "elapsedMs": 5001.198833999995, + "rps": 40965.77776655544, + "latencyMs": { + "mean": 1.2202097121360291, + "p50": 1.172, + "p95": 1.333, + "p99": 2.352, + "max": 5.53970800001116 + }, + "clientCpuPercent": 95.01317899411484, + "serverCpuPercent": 103.68590145594351, + "serverCpuUsPerRequest": 25.313899003309288, + "serverRssMiB": 122.359375, + "serverRetainedHeapMiB": 15.616683959960938, + "idleRssMiB": 84.5625, + "server": { + "type": "stats", + "elapsedMs": 5001.896041, + "cpu": { + "user": 4142344, + "system": 1043917 + }, + "memory": { + "rss": 128303104, + "heapTotal": 41009152, + "heapUsed": 27063488, + "external": 4235940, + "arrayBuffers": 307763 + }, + "retainedMemory": { + "rss": 128319488, + "heapTotal": 38912000, + "heapUsed": 16375280, + "external": 4235940, + "arrayBuffers": 277690 + }, + "maxRssKiB": 125312 + }, + "idleMemory": { + "rss": 88670208, + "heapTotal": 33669120, + "heapUsed": 14158592, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 186149, + "errors": 0, + "elapsedMs": 5001.359333, + "rps": 37219.681211815856, + "latencyMs": { + "mean": 1.3430176760444483, + "p50": 1.291, + "p95": 1.526, + "p99": 2.586, + "max": 14.759457999985898 + }, + "clientCpuPercent": 89.5834052641944, + "serverCpuPercent": 104.26596548286348, + "serverCpuUsPerRequest": 28.017448388119195, + "serverRssMiB": 140.453125, + "serverRetainedHeapMiB": 17.302589416503906, + "idleRssMiB": 88.375, + "server": { + "type": "stats", + "elapsedMs": 5002.034917000001, + "cpu": { + "user": 4185569, + "system": 1029851 + }, + "memory": { + "rss": 147275776, + "heapTotal": 58834944, + "heapUsed": 32804944, + "external": 4384837, + "arrayBuffers": 395739 + }, + "retainedMemory": { + "rss": 147308544, + "heapTotal": 58048512, + "heapUsed": 18143080, + "external": 4384837, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143856 + }, + "idleMemory": { + "rss": 92667904, + "heapTotal": 35241984, + "heapUsed": 15776208, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 2, + "requests": 221179, + "errors": 0, + "elapsedMs": 5001.136041999998, + "rps": 44225.751537754324, + "latencyMs": { + "mean": 1.1302747672247577, + "p50": 1.071, + "p95": 1.605, + "p99": 2.171, + "max": 7.664458000013838 + }, + "clientCpuPercent": 98.81976731877916, + "serverCpuPercent": 104.08053355152293, + "serverCpuUsPerRequest": 23.536886413267084, + "serverRssMiB": 121.375, + "serverRetainedHeapMiB": 15.395767211914062, + "idleRssMiB": 84.609375, + "server": { + "type": "stats", + "elapsedMs": 5001.76625, + "cpu": { + "user": 4053562, + "system": 1152303 + }, + "memory": { + "rss": 127270912, + "heapTotal": 40747008, + "heapUsed": 26727312, + "external": 4235260, + "arrayBuffers": 307083 + }, + "retainedMemory": { + "rss": 127270912, + "heapTotal": 39960576, + "heapUsed": 16143632, + "external": 4235260, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124288 + }, + "idleMemory": { + "rss": 88719360, + "heapTotal": 33406976, + "heapUsed": 14160072, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 233329, + "errors": 0, + "elapsedMs": 5000.885291999992, + "rps": 46657.53889081613, + "latencyMs": { + "mean": 1.0713542978840878, + "p50": 0.96, + "p95": 1.876, + "p99": 2.001, + "max": 4.732208000001265 + }, + "clientCpuPercent": 100.21905537440607, + "serverCpuPercent": 104.1535913862574, + "serverCpuUsPerRequest": 22.325746049569492, + "serverRssMiB": 110.59375, + "serverRetainedHeapMiB": 12.043739318847656, + "idleRssMiB": 74.625, + "server": { + "type": "stats", + "elapsedMs": 5001.502042, + "cpu": { + "user": 3947846, + "system": 1261398 + }, + "memory": { + "rss": 115965952, + "heapTotal": 31473664, + "heapUsed": 20067376, + "external": 4228346, + "arrayBuffers": 329952 + }, + "retainedMemory": { + "rss": 115998720, + "heapTotal": 31473664, + "heapUsed": 12628776, + "external": 4228346, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113280 + }, + "idleMemory": { + "rss": 78249984, + "heapTotal": 20725760, + "heapUsed": 10622600, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 212341, + "errors": 0, + "elapsedMs": 5001.120915999985, + "rps": 42458.68147691885, + "latencyMs": { + "mean": 1.1773225195746593, + "p50": 1.123, + "p95": 1.395, + "p99": 2.273, + "max": 5.690958999999566 + }, + "clientCpuPercent": 96.637215559777, + "serverCpuPercent": 104.13850890362114, + "serverCpuUsPerRequest": 24.53000598094574, + "serverRssMiB": 113.90625, + "serverRetainedHeapMiB": 13.794952392578125, + "idleRssMiB": 80.8125, + "server": { + "type": "stats", + "elapsedMs": 5001.728999999999, + "cpu": { + "user": 4073274, + "system": 1135452 + }, + "memory": { + "rss": 119439360, + "heapTotal": 34095104, + "heapUsed": 20335768, + "external": 4297636, + "arrayBuffers": 308538 + }, + "retainedMemory": { + "rss": 119488512, + "heapTotal": 34095104, + "heapUsed": 14465056, + "external": 4297636, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116688 + }, + "idleMemory": { + "rss": 84738048, + "heapTotal": 31735808, + "heapUsed": 12356240, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 2, + "requests": 239527, + "errors": 0, + "elapsedMs": 5000.576208000013, + "rps": 47899.87994119564, + "latencyMs": { + "mean": 1.0436087528879843, + "p50": 0.997, + "p95": 1.381, + "p99": 2.021, + "max": 7.877875000005588 + }, + "clientCpuPercent": 100.48661976115987, + "serverCpuPercent": 101.7318892821421, + "serverCpuUsPerRequest": 21.24099162098636, + "serverRssMiB": 108.703125, + "serverRetainedHeapMiB": 11.782928466796875, + "idleRssMiB": 75.6875, + "server": { + "type": "stats", + "elapsedMs": 5001.176166, + "cpu": { + "user": 3681960, + "system": 1405831 + }, + "memory": { + "rss": 113983488, + "heapTotal": 31473664, + "heapUsed": 18987064, + "external": 4230410, + "arrayBuffers": 332016 + }, + "retainedMemory": { + "rss": 114016256, + "heapTotal": 31473664, + "heapUsed": 12355296, + "external": 4230410, + "arrayBuffers": 277690 + }, + "maxRssKiB": 111344 + }, + "idleMemory": { + "rss": 79364096, + "heapTotal": 20987904, + "heapUsed": 10625328, + "external": 4686097, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 163455, + "errors": 0, + "elapsedMs": 5001.508667000016, + "rps": 32681.139008810893, + "latencyMs": { + "mean": 1.529449889015336, + "p50": 1.476, + "p95": 1.669, + "p99": 2.946, + "max": 7.287959000008414 + }, + "clientCpuPercent": 82.05971984172884, + "serverCpuPercent": 104.31546491376808, + "serverCpuUsPerRequest": 31.923820011623995, + "serverRssMiB": 121.078125, + "serverRetainedHeapMiB": 14.044189453125, + "idleRssMiB": 81.515625, + "server": { + "type": "stats", + "elapsedMs": 5002.2381669999995, + "cpu": { + "user": 4280224, + "system": 937884 + }, + "memory": { + "rss": 126959616, + "heapTotal": 38371328, + "heapUsed": 20212600, + "external": 4237909, + "arrayBuffers": 350026 + }, + "retainedMemory": { + "rss": 126959616, + "heapTotal": 38109184, + "heapUsed": 14726400, + "external": 4237909, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123984 + }, + "idleMemory": { + "rss": 85475328, + "heapTotal": 31555584, + "heapUsed": 12362784, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 157478, + "errors": 0, + "elapsedMs": 5001.583583, + "rps": 31485.62797895764, + "latencyMs": { + "mean": 1.587503660962189, + "p50": 1.528, + "p95": 1.911, + "p99": 3.061, + "max": 6.5002499999827705 + }, + "clientCpuPercent": 79.3990729955577, + "serverCpuPercent": 104.52470771512913, + "serverCpuUsPerRequest": 33.20178691626767, + "serverRssMiB": 221.171875, + "serverRetainedHeapMiB": 15.752395629882812, + "idleRssMiB": 86.078125, + "server": { + "type": "stats", + "elapsedMs": 5002.215375, + "cpu": { + "user": 4309590, + "system": 918961 + }, + "memory": { + "rss": 231915520, + "heapTotal": 158433280, + "heapUsed": 57653592, + "external": 4810549, + "arrayBuffers": 844730 + }, + "retainedMemory": { + "rss": 231948288, + "heapTotal": 157908992, + "heapUsed": 16517584, + "external": 4810549, + "arrayBuffers": 277690 + }, + "maxRssKiB": 226512 + }, + "idleMemory": { + "rss": 90259456, + "heapTotal": 33914880, + "heapUsed": 14023480, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 2, + "requests": 181943, + "errors": 0, + "elapsedMs": 5001.366792000015, + "rps": 36378.65558891395, + "latencyMs": { + "mean": 1.3740176072781058, + "p50": 1.321, + "p95": 1.529, + "p99": 2.657, + "max": 7.320791999984067 + }, + "clientCpuPercent": 88.86392829874227, + "serverCpuPercent": 104.39127521197587, + "serverCpuUsPerRequest": 28.700263269265648, + "serverRssMiB": 119.140625, + "serverRetainedHeapMiB": 13.747276306152344, + "idleRssMiB": 81.59375, + "server": { + "type": "stats", + "elapsedMs": 5002.153666, + "cpu": { + "user": 4251218, + "system": 970594 + }, + "memory": { + "rss": 124928000, + "heapTotal": 39944192, + "heapUsed": 24755288, + "external": 4268373, + "arrayBuffers": 380490 + }, + "retainedMemory": { + "rss": 124960768, + "heapTotal": 37584896, + "heapUsed": 14415064, + "external": 4268373, + "arrayBuffers": 277690 + }, + "maxRssKiB": 122032 + }, + "idleMemory": { + "rss": 85557248, + "heapTotal": 31293440, + "heapUsed": 12362416, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 185643, + "errors": 0, + "elapsedMs": 5001.344417000015, + "rps": 37118.61941940709, + "latencyMs": { + "mean": 1.3466646068582977, + "p50": 1.296, + "p95": 1.538, + "p99": 2.595, + "max": 5.930749999999534 + }, + "clientCpuPercent": 89.47396193690267, + "serverCpuPercent": 104.1394022596692, + "serverCpuUsPerRequest": 28.0593666338079, + "serverRssMiB": 140.453125, + "serverRetainedHeapMiB": 17.292640686035156, + "idleRssMiB": 88.53125, + "server": { + "type": "stats", + "elapsedMs": 5001.973208, + "cpu": { + "user": 4170319, + "system": 1038706 + }, + "memory": { + "rss": 147275776, + "heapTotal": 58834944, + "heapUsed": 36272712, + "external": 4407413, + "arrayBuffers": 418315 + }, + "retainedMemory": { + "rss": 147292160, + "heapTotal": 58310656, + "heapUsed": 18132648, + "external": 4407413, + "arrayBuffers": 362018 + }, + "maxRssKiB": 143840 + }, + "idleMemory": { + "rss": 92831744, + "heapTotal": 35504128, + "heapUsed": 15776184, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 3, + "requests": 221604, + "errors": 0, + "elapsedMs": 5001.096749999997, + "rps": 44311.080364522066, + "latencyMs": { + "mean": 1.128048189581489, + "p50": 1.07, + "p95": 1.527, + "p99": 2.165, + "max": 4.904167000000598 + }, + "clientCpuPercent": 98.88636927489961, + "serverCpuPercent": 104.42904085619476, + "serverCpuUsPerRequest": 23.570156675872276, + "serverRssMiB": 121.1875, + "serverRetainedHeapMiB": 15.401123046875, + "idleRssMiB": 84.671875, + "server": { + "type": "stats", + "elapsedMs": 5001.713084000001, + "cpu": { + "user": 4071849, + "system": 1151392 + }, + "memory": { + "rss": 127074304, + "heapTotal": 40747008, + "heapUsed": 28694736, + "external": 4252124, + "arrayBuffers": 323947 + }, + "retainedMemory": { + "rss": 127090688, + "heapTotal": 39436288, + "heapUsed": 16149248, + "external": 4252124, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124112 + }, + "idleMemory": { + "rss": 88784896, + "heapTotal": 33406976, + "heapUsed": 14158488, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 204816, + "errors": 0, + "elapsedMs": 5001.193333000003, + "rps": 40953.425785109495, + "latencyMs": { + "mean": 1.2205881729406085, + "p50": 1.168, + "p95": 1.403, + "p99": 2.348, + "max": 5.166457999992417 + }, + "clientCpuPercent": 95.03911733699812, + "serverCpuPercent": 104.37622641367807, + "serverCpuUsPerRequest": 25.490323021638936, + "serverRssMiB": 122.5625, + "serverRetainedHeapMiB": 15.633750915527344, + "idleRssMiB": 84.28125, + "server": { + "type": "stats", + "elapsedMs": 5001.930209, + "cpu": { + "user": 4172879, + "system": 1047947 + }, + "memory": { + "rss": 128516096, + "heapTotal": 40747008, + "heapUsed": 25343768, + "external": 4222068, + "arrayBuffers": 293891 + }, + "retainedMemory": { + "rss": 128516096, + "heapTotal": 40222720, + "heapUsed": 16393176, + "external": 4222068, + "arrayBuffers": 277690 + }, + "maxRssKiB": 125504 + }, + "idleMemory": { + "rss": 88375296, + "heapTotal": 33406976, + "heapUsed": 14161336, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 213225, + "errors": 0, + "elapsedMs": 5001.166499999992, + "rps": 42635.05324207869, + "latencyMs": { + "mean": 1.1724259596435287, + "p50": 1.118, + "p95": 1.377, + "p99": 2.263, + "max": 9.430082999984734 + }, + "clientCpuPercent": 96.90755146824262, + "serverCpuPercent": 104.27899111948437, + "serverCpuUsPerRequest": 24.46200492437566, + "serverRssMiB": 113.71875, + "serverRetainedHeapMiB": 13.7459716796875, + "idleRssMiB": 80.953125, + "server": { + "type": "stats", + "elapsedMs": 5001.880958, + "cpu": { + "user": 4108756, + "system": 1107155 + }, + "memory": { + "rss": 119242752, + "heapTotal": 34095104, + "heapUsed": 17829528, + "external": 4280995, + "arrayBuffers": 291897 + }, + "retainedMemory": { + "rss": 119259136, + "heapTotal": 34095104, + "heapUsed": 14413696, + "external": 4280995, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116464 + }, + "idleMemory": { + "rss": 84885504, + "heapTotal": 31211520, + "heapUsed": 12355496, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 3, + "requests": 249861, + "errors": 0, + "elapsedMs": 5000.585290999996, + "rps": 49966.351028888035, + "latencyMs": { + "mean": 1.0004414578665843, + "p50": 0.987, + "p95": 1.46, + "p99": 2.01, + "max": 6.63895799999591 + }, + "clientCpuPercent": 100.4991757473856, + "serverCpuPercent": 102.02682434223233, + "serverCpuUsPerRequest": 20.421474339732892, + "serverRssMiB": 109.484375, + "serverRetainedHeapMiB": 11.780044555664062, + "idleRssMiB": 75.0625, + "server": { + "type": "stats", + "elapsedMs": 5001.165167, + "cpu": { + "user": 3673070, + "system": 1429460 + }, + "memory": { + "rss": 114802688, + "heapTotal": 31473664, + "heapUsed": 19215080, + "external": 4232474, + "arrayBuffers": 334080 + }, + "retainedMemory": { + "rss": 114802688, + "heapTotal": 31473664, + "heapUsed": 12352272, + "external": 4232474, + "arrayBuffers": 277690 + }, + "maxRssKiB": 112112 + }, + "idleMemory": { + "rss": 78708736, + "heapTotal": 21250048, + "heapUsed": 10621648, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 234559, + "errors": 0, + "elapsedMs": 5000.760708000016, + "rps": 46904.66384939434, + "latencyMs": { + "mean": 1.0657330839703474, + "p50": 0.93, + "p95": 1.806, + "p99": 1.965, + "max": 10.864750000007916 + }, + "clientCpuPercent": 100.10914923386059, + "serverCpuPercent": 104.26589041695277, + "serverCpuUsPerRequest": 22.232772991017185, + "serverRssMiB": 111.03125, + "serverRetainedHeapMiB": 11.96624755859375, + "idleRssMiB": 75.265625, + "server": { + "type": "stats", + "elapsedMs": 5001.536916000001, + "cpu": { + "user": 3953086, + "system": 1261811 + }, + "memory": { + "rss": 116424704, + "heapTotal": 31997952, + "heapUsed": 15104840, + "external": 4188098, + "arrayBuffers": 289704 + }, + "retainedMemory": { + "rss": 116490240, + "heapTotal": 31997952, + "heapUsed": 12547520, + "external": 4188098, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113760 + }, + "idleMemory": { + "rss": 78921728, + "heapTotal": 21512192, + "heapUsed": 10622768, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 156918, + "errors": 0, + "elapsedMs": 5001.360333999997, + "rps": 31375.06388676855, + "latencyMs": { + "mean": 1.5931720675831178, + "p50": 1.534, + "p95": 1.92, + "p99": 3.072, + "max": 6.354583000007551 + }, + "clientCpuPercent": 78.81899596798782, + "serverCpuPercent": 104.71408473021594, + "serverCpuUsPerRequest": 33.38095693292038, + "serverRssMiB": 219.578125, + "serverRetainedHeapMiB": 15.59283447265625, + "idleRssMiB": 85.640625, + "server": { + "type": "stats", + "elapsedMs": 5002.262124999999, + "cpu": { + "user": 4315947, + "system": 922126 + }, + "memory": { + "rss": 230244352, + "heapTotal": 158171136, + "heapUsed": 67210736, + "external": 4938373, + "arrayBuffers": 972554 + }, + "retainedMemory": { + "rss": 229998592, + "heapTotal": 157384704, + "heapUsed": 16350272, + "external": 4938373, + "arrayBuffers": 277690 + }, + "maxRssKiB": 224880 + }, + "idleMemory": { + "rss": 89800704, + "heapTotal": 33128448, + "heapUsed": 14018520, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 3, + "requests": 181683, + "errors": 0, + "elapsedMs": 5001.347791999986, + "rps": 36326.807803811396, + "latencyMs": { + "mean": 1.3760031427046198, + "p50": 1.326, + "p95": 1.518, + "p99": 2.654, + "max": 5.012542000011308 + }, + "clientCpuPercent": 89.00430814110463, + "serverCpuPercent": 104.36436526839131, + "serverCpuUsPerRequest": 28.733546892114287, + "serverRssMiB": 119.4375, + "serverRetainedHeapMiB": 13.766426086425781, + "idleRssMiB": 82.03125, + "server": { + "type": "stats", + "elapsedMs": 5002.087625, + "cpu": { + "user": 4233846, + "system": 986551 + }, + "memory": { + "rss": 125239296, + "heapTotal": 39157760, + "heapUsed": 25375392, + "external": 4274085, + "arrayBuffers": 386202 + }, + "retainedMemory": { + "rss": 125239296, + "heapTotal": 38633472, + "heapUsed": 14435144, + "external": 4274085, + "arrayBuffers": 277690 + }, + "maxRssKiB": 122304 + }, + "idleMemory": { + "rss": 86016000, + "heapTotal": 31293440, + "heapUsed": 12363808, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 164945, + "errors": 0, + "elapsedMs": 5001.456000000006, + "rps": 32979.39639976835, + "latencyMs": { + "mean": 1.5156587369486774, + "p50": 1.458, + "p95": 1.684, + "p99": 2.91, + "max": 7.315457999997307 + }, + "clientCpuPercent": 82.53710519496714, + "serverCpuPercent": 104.4580498053539, + "serverCpuUsPerRequest": 31.678177574342964, + "serverRssMiB": 121.421875, + "serverRetainedHeapMiB": 14.041259765625, + "idleRssMiB": 81.515625, + "server": { + "type": "stats", + "elapsedMs": 5002.158292, + "cpu": { + "user": 4300730, + "system": 924427 + }, + "memory": { + "rss": 127320064, + "heapTotal": 39682048, + "heapUsed": 23487224, + "external": 4263613, + "arrayBuffers": 375730 + }, + "retainedMemory": { + "rss": 127352832, + "heapTotal": 38895616, + "heapUsed": 14723328, + "external": 4263613, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124368 + }, + "idleMemory": { + "rss": 85475328, + "heapTotal": 31817728, + "heapUsed": 12362856, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 201728, + "errors": 0, + "elapsedMs": 5001.215957999986, + "rps": 40335.79067452871, + "latencyMs": { + "mean": 1.2392733319666884, + "p50": 1.193, + "p95": 1.415, + "p99": 2.39, + "max": 16.10379100003047 + }, + "clientCpuPercent": 93.90600284891782, + "serverCpuPercent": 105.29293269081728, + "serverCpuUsPerRequest": 26.10801177823604, + "serverRssMiB": 119, + "serverRetainedHeapMiB": 15.577873229980469, + "idleRssMiB": 86.890625, + "server": { + "type": "stats", + "elapsedMs": 5001.966291000001, + "cpu": { + "user": 4211611, + "system": 1055106 + }, + "memory": { + "rss": 124780544, + "heapTotal": 36536320, + "heapUsed": 23569408, + "external": 4278070, + "arrayBuffers": 312251 + }, + "retainedMemory": { + "rss": 124780544, + "heapTotal": 36012032, + "heapUsed": 16334584, + "external": 4278070, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121856 + }, + "idleMemory": { + "rss": 91111424, + "heapTotal": 33390592, + "heapUsed": 13959944, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 3, + "requests": 224250, + "errors": 0, + "elapsedMs": 5001.127124999999, + "rps": 44839.891967353265, + "latencyMs": { + "mean": 1.1147521697392144, + "p50": 1.058, + "p95": 1.635, + "p99": 2.144, + "max": 7.061083000036888 + }, + "clientCpuPercent": 99.09336187889846, + "serverCpuPercent": 104.99774603426738, + "serverCpuUsPerRequest": 23.41901449275362, + "serverRssMiB": 113.328125, + "serverRetainedHeapMiB": 13.803398132324219, + "idleRssMiB": 81.828125, + "server": { + "type": "stats", + "elapsedMs": 5001.73975, + "cpu": { + "user": 4067862, + "system": 1183852 + }, + "memory": { + "rss": 118833152, + "heapTotal": 33914880, + "heapUsed": 21611032, + "external": 4225717, + "arrayBuffers": 320819 + }, + "retainedMemory": { + "rss": 118849536, + "heapTotal": 33914880, + "heapUsed": 14473912, + "external": 4225717, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116064 + }, + "idleMemory": { + "rss": 85803008, + "heapTotal": 31555584, + "heapUsed": 12357216, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 203575, + "errors": 0, + "elapsedMs": 5001.2432499999995, + "rps": 40704.878731903314, + "latencyMs": { + "mean": 1.2280134095639401, + "p50": 1.175, + "p95": 1.467, + "p99": 2.364, + "max": 7.310416999971494 + }, + "clientCpuPercent": 94.40864529034856, + "serverCpuPercent": 104.85275840867432, + "serverCpuUsPerRequest": 25.763006263048016, + "serverRssMiB": 114.671875, + "serverRetainedHeapMiB": 14.005294799804688, + "idleRssMiB": 81.921875, + "server": { + "type": "stats", + "elapsedMs": 5001.970458, + "cpu": { + "user": 4181441, + "system": 1063263 + }, + "memory": { + "rss": 120242176, + "heapTotal": 34701312, + "heapUsed": 15888784, + "external": 4182605, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 120274944, + "heapTotal": 34177024, + "heapUsed": 14685616, + "external": 4182605, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117456 + }, + "idleMemory": { + "rss": 85901312, + "heapTotal": 31555584, + "heapUsed": 12357656, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 4, + "requests": 238723, + "errors": 0, + "elapsedMs": 5000.591709, + "rps": 47738.950486669295, + "latencyMs": { + "mean": 1.0471543680038753, + "p50": 1, + "p95": 1.325, + "p99": 2.025, + "max": 7.572625000029802 + }, + "clientCpuPercent": 100.40013846689358, + "serverCpuPercent": 101.90131730824824, + "serverCpuUsPerRequest": 21.34888971737118, + "serverRssMiB": 109.84375, + "serverRetainedHeapMiB": 11.6885986328125, + "idleRssMiB": 74.703125, + "server": { + "type": "stats", + "elapsedMs": 5001.378917, + "cpu": { + "user": 3690715, + "system": 1405756 + }, + "memory": { + "rss": 115179520, + "heapTotal": 31735808, + "heapUsed": 14928784, + "external": 4190678, + "arrayBuffers": 292284 + }, + "retainedMemory": { + "rss": 115212288, + "heapTotal": 31735808, + "heapUsed": 12256384, + "external": 4190678, + "arrayBuffers": 277690 + }, + "maxRssKiB": 112512 + }, + "idleMemory": { + "rss": 78331904, + "heapTotal": 20987904, + "heapUsed": 10622672, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 4, + "requests": 234246, + "errors": 0, + "elapsedMs": 5000.950542000006, + "rps": 46840.29526641132, + "latencyMs": { + "mean": 1.0671523947944008, + "p50": 0.941, + "p95": 1.835, + "p99": 1.982, + "max": 5.969083000032697 + }, + "clientCpuPercent": 100.11570716309623, + "serverCpuPercent": 103.9872045931359, + "serverCpuUsPerRequest": 22.203555236802337, + "serverRssMiB": 111.3125, + "serverRetainedHeapMiB": 11.960350036621094, + "idleRssMiB": 74.8125, + "server": { + "type": "stats", + "elapsedMs": 5001.667292, + "cpu": { + "user": 3931117, + "system": 1269977 + }, + "memory": { + "rss": 116719616, + "heapTotal": 31473664, + "heapUsed": 14629248, + "external": 4185518, + "arrayBuffers": 287124 + }, + "retainedMemory": { + "rss": 116736000, + "heapTotal": 31473664, + "heapUsed": 12541336, + "external": 4185518, + "arrayBuffers": 277690 + }, + "maxRssKiB": 114000 + }, + "idleMemory": { + "rss": 78446592, + "heapTotal": 20725760, + "heapUsed": 10622712, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 4, + "requests": 213432, + "errors": 0, + "elapsedMs": 5001.153541000036, + "rps": 42676.55416900516, + "latencyMs": { + "mean": 1.1713091512472822, + "p50": 1.117, + "p95": 1.353, + "p99": 2.255, + "max": 9.122167000023182 + }, + "clientCpuPercent": 96.91068191101483, + "serverCpuPercent": 104.13691722911719, + "serverCpuUsPerRequest": 24.404639416769744, + "serverRssMiB": 113.9375, + "serverRetainedHeapMiB": 13.728591918945312, + "idleRssMiB": 80.984375, + "server": { + "type": "stats", + "elapsedMs": 5001.81025, + "cpu": { + "user": 4094209, + "system": 1114522 + }, + "memory": { + "rss": 119472128, + "heapTotal": 34619392, + "heapUsed": 17901824, + "external": 4282285, + "arrayBuffers": 293187 + }, + "retainedMemory": { + "rss": 119504896, + "heapTotal": 33832960, + "heapUsed": 14395472, + "external": 4282285, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116704 + }, + "idleMemory": { + "rss": 84918272, + "heapTotal": 30949376, + "heapUsed": 12356920, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 4, + "requests": 180698, + "errors": 0, + "elapsedMs": 5001.383000000031, + "rps": 36129.60655082782, + "latencyMs": { + "mean": 1.3834891061328367, + "p50": 1.332, + "p95": 1.519, + "p99": 2.671, + "max": 6.380792000039946 + }, + "clientCpuPercent": 88.66557510192627, + "serverCpuPercent": 104.30399139653598, + "serverCpuUsPerRequest": 28.872915029496728, + "serverRssMiB": 119.84375, + "serverRetainedHeapMiB": 13.8267822265625, + "idleRssMiB": 81.796875, + "server": { + "type": "stats", + "elapsedMs": 5001.992666, + "cpu": { + "user": 4241453, + "system": 975825 + }, + "memory": { + "rss": 125665280, + "heapTotal": 39419904, + "heapUsed": 24554720, + "external": 4267149, + "arrayBuffers": 379266 + }, + "retainedMemory": { + "rss": 125698048, + "heapTotal": 38633472, + "heapUsed": 14498432, + "external": 4267149, + "arrayBuffers": 277690 + }, + "maxRssKiB": 122752 + }, + "idleMemory": { + "rss": 85770240, + "heapTotal": 31293440, + "heapUsed": 12363952, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 4, + "requests": 165124, + "errors": 0, + "elapsedMs": 5001.455249999999, + "rps": 33015.19092868021, + "latencyMs": { + "mean": 1.514042426673299, + "p50": 1.458, + "p95": 1.684, + "p99": 2.908, + "max": 5.521416000032332 + }, + "clientCpuPercent": 82.78282605847569, + "serverCpuPercent": 104.38606342183371, + "serverCpuUsPerRequest": 31.622096121702477, + "serverRssMiB": 121.046875, + "serverRetainedHeapMiB": 14.032363891601562, + "idleRssMiB": 81.921875, + "server": { + "type": "stats", + "elapsedMs": 5002.168708, + "cpu": { + "user": 4296683, + "system": 924884 + }, + "memory": { + "rss": 126926848, + "heapTotal": 39682048, + "heapUsed": 25011568, + "external": 4342477, + "arrayBuffers": 454594 + }, + "retainedMemory": { + "rss": 126943232, + "heapTotal": 38109184, + "heapUsed": 14714000, + "external": 4342477, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123968 + }, + "idleMemory": { + "rss": 85901312, + "heapTotal": 31555584, + "heapUsed": 12365024, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 4, + "requests": 156242, + "errors": 0, + "elapsedMs": 5001.550833000045, + "rps": 31238.710795283965, + "latencyMs": { + "mean": 1.6001213319337764, + "p50": 1.547, + "p95": 1.913, + "p99": 3.093, + "max": 6.159209000004921 + }, + "clientCpuPercent": 78.28369901124155, + "serverCpuPercent": 104.45926680194664, + "serverCpuUsPerRequest": 33.44280667170159, + "serverRssMiB": 220.859375, + "serverRetainedHeapMiB": 15.738319396972656, + "idleRssMiB": 85.671875, + "server": { + "type": "stats", + "elapsedMs": 5002.1134170000005, + "cpu": { + "user": 4308529, + "system": 916642 + }, + "memory": { + "rss": 231587840, + "heapTotal": 158695424, + "heapUsed": 32197680, + "external": 4448837, + "arrayBuffers": 483018 + }, + "retainedMemory": { + "rss": 231325696, + "heapTotal": 156598272, + "heapUsed": 16502824, + "external": 4448837, + "arrayBuffers": 277690 + }, + "maxRssKiB": 226176 + }, + "idleMemory": { + "rss": 89833472, + "heapTotal": 33390592, + "heapUsed": 14023816, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 4, + "requests": 223685, + "errors": 0, + "elapsedMs": 5001.040000000037, + "rps": 44727.696639098736, + "latencyMs": { + "mean": 1.1175873198158148, + "p50": 1.061, + "p95": 1.618, + "p99": 2.152, + "max": 5.2594999999855645 + }, + "clientCpuPercent": 99.01518484155221, + "serverCpuPercent": 104.91761894631342, + "serverCpuUsPerRequest": 23.46090260857903, + "serverRssMiB": 113, + "serverRetainedHeapMiB": 13.712615966796875, + "idleRssMiB": 81.203125, + "server": { + "type": "stats", + "elapsedMs": 5001.878666999999, + "cpu": { + "user": 4072446, + "system": 1175406 + }, + "memory": { + "rss": 118489088, + "heapTotal": 33914880, + "heapUsed": 21553176, + "external": 4225445, + "arrayBuffers": 320547 + }, + "retainedMemory": { + "rss": 118521856, + "heapTotal": 33914880, + "heapUsed": 14378720, + "external": 4225445, + "arrayBuffers": 277690 + }, + "maxRssKiB": 115744 + }, + "idleMemory": { + "rss": 85147648, + "heapTotal": 31555584, + "heapUsed": 12357472, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 4, + "requests": 205046, + "errors": 0, + "elapsedMs": 5001.278500000015, + "rps": 40998.71662815806, + "latencyMs": { + "mean": 1.2192358825775376, + "p50": 1.167, + "p95": 1.406, + "p99": 2.352, + "max": 5.99937500001397 + }, + "clientCpuPercent": 95.0370990137819, + "serverCpuPercent": 104.99375879799064, + "serverCpuUsPerRequest": 25.6124284306936, + "serverRssMiB": 115.28125, + "serverRetainedHeapMiB": 14.005577087402344, + "idleRssMiB": 82.078125, + "server": { + "type": "stats", + "elapsedMs": 5001.941125, + "cpu": { + "user": 4186956, + "system": 1064770 + }, + "memory": { + "rss": 120881152, + "heapTotal": 34701312, + "heapUsed": 16466248, + "external": 4186277, + "arrayBuffers": 281379 + }, + "retainedMemory": { + "rss": 120881152, + "heapTotal": 34701312, + "heapUsed": 14685912, + "external": 4186277, + "arrayBuffers": 277690 + }, + "maxRssKiB": 118048 + }, + "idleMemory": { + "rss": 86065152, + "heapTotal": 31817728, + "heapUsed": 12357904, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 4, + "requests": 199880, + "errors": 0, + "elapsedMs": 5001.194875000045, + "rps": 39966.4490178456, + "latencyMs": { + "mean": 1.2507038230186964, + "p50": 1.204, + "p95": 1.419, + "p99": 2.411, + "max": 5.703207999991719 + }, + "clientCpuPercent": 93.42223442152827, + "serverCpuPercent": 104.7449181297978, + "serverCpuUsPerRequest": 26.212287372423454, + "serverRssMiB": 118.75, + "serverRetainedHeapMiB": 15.557510375976562, + "idleRssMiB": 86.984375, + "server": { + "type": "stats", + "elapsedMs": 5001.9725, + "cpu": { + "user": 4190440, + "system": 1048872 + }, + "memory": { + "rss": 124518400, + "heapTotal": 36536320, + "heapUsed": 20143872, + "external": 4257806, + "arrayBuffers": 291987 + }, + "retainedMemory": { + "rss": 124551168, + "heapTotal": 36012032, + "heapUsed": 16313232, + "external": 4257806, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121632 + }, + "idleMemory": { + "rss": 91209728, + "heapTotal": 32866304, + "heapUsed": 13956824, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 4, + "requests": 222252, + "errors": 0, + "elapsedMs": 5001.087791999977, + "rps": 44440.73154555033, + "latencyMs": { + "mean": 1.12479285651874, + "p50": 1.067, + "p95": 1.632, + "p99": 2.168, + "max": 5.434166999999434 + }, + "clientCpuPercent": 98.99744227485505, + "serverCpuPercent": 104.43416563653525, + "serverCpuUsPerRequest": 23.502470168997355, + "serverRssMiB": 121.28125, + "serverRetainedHeapMiB": 15.400779724121094, + "idleRssMiB": 84.421875, + "server": { + "type": "stats", + "elapsedMs": 5001.687875, + "cpu": { + "user": 4085046, + "system": 1138425 + }, + "memory": { + "rss": 127172608, + "heapTotal": 41009152, + "heapUsed": 29186880, + "external": 4255796, + "arrayBuffers": 327619 + }, + "retainedMemory": { + "rss": 127188992, + "heapTotal": 39174144, + "heapUsed": 16148888, + "external": 4255796, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124208 + }, + "idleMemory": { + "rss": 88522752, + "heapTotal": 33406976, + "heapUsed": 14159264, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 4, + "requests": 203001, + "errors": 0, + "elapsedMs": 5001.285709000018, + "rps": 40589.76267536394, + "latencyMs": { + "mean": 1.2315034983325124, + "p50": 1.177, + "p95": 1.413, + "p99": 2.37, + "max": 6.033875000022817 + }, + "clientCpuPercent": 94.66575747672373, + "serverCpuPercent": 104.52878643897917, + "serverCpuUsPerRequest": 25.755602189151777, + "serverRssMiB": 122.34375, + "serverRetainedHeapMiB": 15.676719665527344, + "idleRssMiB": 84.53125, + "server": { + "type": "stats", + "elapsedMs": 5001.888167, + "cpu": { + "user": 4190419, + "system": 1037994 + }, + "memory": { + "rss": 128286720, + "heapTotal": 41009152, + "heapUsed": 27993920, + "external": 4241108, + "arrayBuffers": 312931 + }, + "retainedMemory": { + "rss": 128286720, + "heapTotal": 40484864, + "heapUsed": 16438232, + "external": 4241108, + "arrayBuffers": 277690 + }, + "maxRssKiB": 125280 + }, + "idleMemory": { + "rss": 88637440, + "heapTotal": 33931264, + "heapUsed": 14158864, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 4, + "requests": 185915, + "errors": 0, + "elapsedMs": 5001.439292000025, + "rps": 37172.29964130075, + "latencyMs": { + "mean": 1.344730671409029, + "p50": 1.294, + "p95": 1.527, + "p99": 2.59, + "max": 6.132917000039015 + }, + "clientCpuPercent": 89.60246717716188, + "serverCpuPercent": 104.25551114416304, + "serverCpuUsPerRequest": 28.050060511524084, + "serverRssMiB": 140.265625, + "serverRetainedHeapMiB": 17.307044982910156, + "idleRssMiB": 88.28125, + "server": { + "type": "stats", + "elapsedMs": 5002.063625, + "cpu": { + "user": 4170832, + "system": 1044095 + }, + "memory": { + "rss": 147079168, + "heapTotal": 58834944, + "heapUsed": 25494224, + "external": 4339141, + "arrayBuffers": 350043 + }, + "retainedMemory": { + "rss": 147095552, + "heapTotal": 58048512, + "heapUsed": 18147752, + "external": 4339141, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143648 + }, + "idleMemory": { + "rss": 92569600, + "heapTotal": 35241984, + "heapUsed": 15776056, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 5, + "requests": 164288, + "errors": 0, + "elapsedMs": 5001.490457999986, + "rps": 32847.80834425426, + "latencyMs": { + "mean": 1.52171935286812, + "p50": 1.465, + "p95": 1.679, + "p99": 2.923, + "max": 6.8828750000102445 + }, + "clientCpuPercent": 82.51618261909742, + "serverCpuPercent": 104.49332763618415, + "serverCpuUsPerRequest": 31.81635907674328, + "serverRssMiB": 121.078125, + "serverRetainedHeapMiB": 14.076148986816406, + "idleRssMiB": 82.015625, + "server": { + "type": "stats", + "elapsedMs": 5002.277292000001, + "cpu": { + "user": 4298720, + "system": 928326 + }, + "memory": { + "rss": 126959616, + "heapTotal": 39157760, + "heapUsed": 20767088, + "external": 4310109, + "arrayBuffers": 422226 + }, + "retainedMemory": { + "rss": 126615552, + "heapTotal": 37847040, + "heapUsed": 14759912, + "external": 4310109, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124000 + }, + "idleMemory": { + "rss": 85999616, + "heapTotal": 31293440, + "heapUsed": 12363912, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 5, + "requests": 157943, + "errors": 0, + "elapsedMs": 5001.527082999994, + "rps": 31578.95526285211, + "latencyMs": { + "mean": 1.5828842673433217, + "p50": 1.531, + "p95": 1.897, + "p99": 3.074, + "max": 6.196374999999534 + }, + "clientCpuPercent": 79.03110258935301, + "serverCpuPercent": 104.38032687878683, + "serverCpuUsPerRequest": 33.057894303641184, + "serverRssMiB": 220.84375, + "serverRetainedHeapMiB": 15.747245788574219, + "idleRssMiB": 85.734375, + "server": { + "type": "stats", + "elapsedMs": 5002.152375000001, + "cpu": { + "user": 4320620, + "system": 900643 + }, + "memory": { + "rss": 231571456, + "heapTotal": 157908992, + "heapUsed": 66480296, + "external": 4930349, + "arrayBuffers": 964530 + }, + "retainedMemory": { + "rss": 231604224, + "heapTotal": 157122560, + "heapUsed": 16512184, + "external": 4930349, + "arrayBuffers": 277690 + }, + "maxRssKiB": 226176 + }, + "idleMemory": { + "rss": 89899008, + "heapTotal": 33652736, + "heapUsed": 14018528, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 5, + "requests": 180637, + "errors": 0, + "elapsedMs": 5001.347541999945, + "rps": 36117.665985628875, + "latencyMs": { + "mean": 1.3839768064293902, + "p50": 1.333, + "p95": 1.527, + "p99": 2.67, + "max": 6.677124999987427 + }, + "clientCpuPercent": 88.60194103263638, + "serverCpuPercent": 104.41354530926012, + "serverCpuUsPerRequest": 28.91368324318938, + "serverRssMiB": 119.390625, + "serverRetainedHeapMiB": 13.757972717285156, + "idleRssMiB": 82.03125, + "server": { + "type": "stats", + "elapsedMs": 5002.110583, + "cpu": { + "user": 4230519, + "system": 992362 + }, + "memory": { + "rss": 125190144, + "heapTotal": 40206336, + "heapUsed": 23835656, + "external": 4263341, + "arrayBuffers": 375458 + }, + "retainedMemory": { + "rss": 124780544, + "heapTotal": 37060608, + "heapUsed": 14426280, + "external": 4263341, + "arrayBuffers": 277690 + }, + "maxRssKiB": 122368 + }, + "idleMemory": { + "rss": 86016000, + "heapTotal": 31555584, + "heapUsed": 12363880, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 5, + "requests": 205018, + "errors": 0, + "elapsedMs": 5001.199999999953, + "rps": 40993.761497241045, + "latencyMs": { + "mean": 1.219384891819241, + "p50": 1.167, + "p95": 1.411, + "p99": 2.344, + "max": 16.569666999974288 + }, + "clientCpuPercent": 94.99658082060394, + "serverCpuPercent": 104.9485940495405, + "serverCpuUsPerRequest": 25.604707879308158, + "serverRssMiB": 115.140625, + "serverRetainedHeapMiB": 14.029090881347656, + "idleRssMiB": 81.734375, + "server": { + "type": "stats", + "elapsedMs": 5001.902167, + "cpu": { + "user": 4184612, + "system": 1064814 + }, + "memory": { + "rss": 120733696, + "heapTotal": 34439168, + "heapUsed": 15912416, + "external": 4182605, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 120733696, + "heapTotal": 34439168, + "heapUsed": 14710568, + "external": 4182605, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117904 + }, + "idleMemory": { + "rss": 85704704, + "heapTotal": 31555584, + "heapUsed": 12360056, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 5, + "requests": 202026, + "errors": 0, + "elapsedMs": 5001.291666999983, + "rps": 40394.76468309735, + "latencyMs": { + "mean": 1.2374585565569687, + "p50": 1.192, + "p95": 1.4, + "p99": 2.386, + "max": 6.765291999967303 + }, + "clientCpuPercent": 93.99035915095364, + "serverCpuPercent": 105.00725251993956, + "serverCpuUsPerRequest": 25.999227822161505, + "serverRssMiB": 118.984375, + "serverRetainedHeapMiB": 15.548805236816406, + "idleRssMiB": 86.4375, + "server": { + "type": "stats", + "elapsedMs": 5002.0545, + "cpu": { + "user": 4197966, + "system": 1054554 + }, + "memory": { + "rss": 124764160, + "heapTotal": 36274176, + "heapUsed": 18494088, + "external": 4248286, + "arrayBuffers": 282467 + }, + "retainedMemory": { + "rss": 124862464, + "heapTotal": 36012032, + "heapUsed": 16304104, + "external": 4248286, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121936 + }, + "idleMemory": { + "rss": 90636288, + "heapTotal": 33128448, + "heapUsed": 13959424, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 5, + "requests": 222666, + "errors": 0, + "elapsedMs": 5001.107833000016, + "rps": 44523.33511601754, + "latencyMs": { + "mean": 1.1226771548552918, + "p50": 1.067, + "p95": 1.589, + "p99": 2.16, + "max": 5.487250000005588 + }, + "clientCpuPercent": 99.10362194743709, + "serverCpuPercent": 105.19410759861194, + "serverCpuUsPerRequest": 23.63010068892422, + "serverRssMiB": 113.578125, + "serverRetainedHeapMiB": 13.7470703125, + "idleRssMiB": 81.78125, + "server": { + "type": "stats", + "elapsedMs": 5001.820083, + "cpu": { + "user": 4057529, + "system": 1204091 + }, + "memory": { + "rss": 119095296, + "heapTotal": 33914880, + "heapUsed": 20145248, + "external": 4215245, + "arrayBuffers": 310347 + }, + "retainedMemory": { + "rss": 119128064, + "heapTotal": 33914880, + "heapUsed": 14414848, + "external": 4215245, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116336 + }, + "idleMemory": { + "rss": 85753856, + "heapTotal": 31555584, + "heapUsed": 12358112, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 5, + "requests": 202789, + "errors": 0, + "elapsedMs": 5001.250124999962, + "rps": 40547.662070791055, + "latencyMs": { + "mean": 1.2327967333780432, + "p50": 1.179, + "p95": 1.401, + "p99": 2.369, + "max": 6.622583000047598 + }, + "clientCpuPercent": 94.64601612981785, + "serverCpuPercent": 104.38856967605967, + "serverCpuUsPerRequest": 25.747491234731665, + "serverRssMiB": 122.53125, + "serverRetainedHeapMiB": 15.663139343261719, + "idleRssMiB": 84.375, + "server": { + "type": "stats", + "elapsedMs": 5001.800499999999, + "cpu": { + "user": 4183331, + "system": 1037977 + }, + "memory": { + "rss": 128483328, + "heapTotal": 40747008, + "heapUsed": 25252672, + "external": 4221388, + "arrayBuffers": 293211 + }, + "retainedMemory": { + "rss": 128483328, + "heapTotal": 39960576, + "heapUsed": 16423992, + "external": 4221388, + "arrayBuffers": 277690 + }, + "maxRssKiB": 125472 + }, + "idleMemory": { + "rss": 88473600, + "heapTotal": 33406976, + "heapUsed": 14159144, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 5, + "requests": 186943, + "errors": 0, + "elapsedMs": 5001.304875000031, + "rps": 37378.845055911304, + "latencyMs": { + "mean": 1.3373034068191643, + "p50": 1.288, + "p95": 1.504, + "p99": 2.578, + "max": 6.037458000006154 + }, + "clientCpuPercent": 89.8054030349424, + "serverCpuPercent": 104.24404242921248, + "serverCpuUsPerRequest": 27.892170340692083, + "serverRssMiB": 140.21875, + "serverRetainedHeapMiB": 17.30425262451172, + "idleRssMiB": 88.484375, + "server": { + "type": "stats", + "elapsedMs": 5001.960667, + "cpu": { + "user": 4170609, + "system": 1043637 + }, + "memory": { + "rss": 147030016, + "heapTotal": 58834944, + "heapUsed": 34977952, + "external": 4398709, + "arrayBuffers": 409611 + }, + "retainedMemory": { + "rss": 147030016, + "heapTotal": 58048512, + "heapUsed": 18144824, + "external": 4398709, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143584 + }, + "idleMemory": { + "rss": 92782592, + "heapTotal": 35241984, + "heapUsed": 15776304, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 5, + "requests": 225362, + "errors": 0, + "elapsedMs": 5001.131083999993, + "rps": 45062.20617191891, + "latencyMs": { + "mean": 1.1092835537934171, + "p50": 1.059, + "p95": 1.659, + "p99": 2.156, + "max": 5.405749999976251 + }, + "clientCpuPercent": 98.91412396340233, + "serverCpuPercent": 104.22449840658737, + "serverCpuUsPerRequest": 23.13213851492266, + "serverRssMiB": 121.734375, + "serverRetainedHeapMiB": 15.391036987304688, + "idleRssMiB": 84.75, + "server": { + "type": "stats", + "elapsedMs": 5001.803875, + "cpu": { + "user": 4075741, + "system": 1137364 + }, + "memory": { + "rss": 127647744, + "heapTotal": 40747008, + "heapUsed": 26523592, + "external": 4232132, + "arrayBuffers": 303955 + }, + "retainedMemory": { + "rss": 127647744, + "heapTotal": 39174144, + "heapUsed": 16138672, + "external": 4232132, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124656 + }, + "idleMemory": { + "rss": 88866816, + "heapTotal": 33669120, + "heapUsed": 14159056, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 5, + "requests": 234871, + "errors": 0, + "elapsedMs": 5000.9130000000005, + "rps": 46965.624077043525, + "latencyMs": { + "mean": 1.0643523740946912, + "p50": 0.938, + "p95": 1.83, + "p99": 1.959, + "max": 5.441708999976981 + }, + "clientCpuPercent": 100.18786569572396, + "serverCpuPercent": 103.96180971241894, + "serverCpuUsPerRequest": 22.13812262901763, + "serverRssMiB": 111.109375, + "serverRetainedHeapMiB": 12.053703308105469, + "idleRssMiB": 75.6875, + "server": { + "type": "stats", + "elapsedMs": 5001.454874999999, + "cpu": { + "user": 3923966, + "system": 1275637 + }, + "memory": { + "rss": 116506624, + "heapTotal": 31473664, + "heapUsed": 15747792, + "external": 4194290, + "arrayBuffers": 295896 + }, + "retainedMemory": { + "rss": 116555776, + "heapTotal": 31473664, + "heapUsed": 12639224, + "external": 4194290, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113824 + }, + "idleMemory": { + "rss": 79364096, + "heapTotal": 21512192, + "heapUsed": 10625224, + "external": 4686097, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 5, + "requests": 214954, + "errors": 0, + "elapsedMs": 5001.169750000001, + "rps": 42980.744654788, + "latencyMs": { + "mean": 1.1630080277827133, + "p50": 1.118, + "p95": 1.361, + "p99": 2.268, + "max": 6.121125000005122 + }, + "clientCpuPercent": 96.62591436733375, + "serverCpuPercent": 104.08005728838911, + "serverCpuUsPerRequest": 24.218246694641643, + "serverRssMiB": 114.09375, + "serverRetainedHeapMiB": 13.787818908691406, + "idleRssMiB": 80.75, + "server": { + "type": "stats", + "elapsedMs": 5001.735333, + "cpu": { + "user": 4075972, + "system": 1129837 + }, + "memory": { + "rss": 119635968, + "heapTotal": 33832960, + "heapUsed": 19381968, + "external": 4291573, + "arrayBuffers": 302475 + }, + "retainedMemory": { + "rss": 119668736, + "heapTotal": 33832960, + "heapUsed": 14457576, + "external": 4291573, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116864 + }, + "idleMemory": { + "rss": 84672512, + "heapTotal": 31473664, + "heapUsed": 12355264, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 5, + "requests": 238747, + "errors": 0, + "elapsedMs": 5000.580749999965, + "rps": 47743.85455129421, + "latencyMs": { + "mean": 1.047022013642081, + "p50": 1, + "p95": 1.486, + "p99": 2.025, + "max": 7.06212499999674 + }, + "clientCpuPercent": 100.54282195123108, + "serverCpuPercent": 102.10886931788403, + "serverCpuUsPerRequest": 21.39008657700411, + "serverRssMiB": 109.15625, + "serverRetainedHeapMiB": 11.69696044921875, + "idleRssMiB": 75.015625, + "server": { + "type": "stats", + "elapsedMs": 5001.347125, + "cpu": { + "user": 3710878, + "system": 1395941 + }, + "memory": { + "rss": 114458624, + "heapTotal": 31473664, + "heapUsed": 15038376, + "external": 4191452, + "arrayBuffers": 293058 + }, + "retainedMemory": { + "rss": 114475008, + "heapTotal": 31473664, + "heapUsed": 12265152, + "external": 4191452, + "arrayBuffers": 277690 + }, + "maxRssKiB": 111792 + }, + "idleMemory": { + "rss": 78659584, + "heapTotal": 20987904, + "heapUsed": 10624192, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 6, + "requests": 201865, + "errors": 0, + "elapsedMs": 5001.263416000002, + "rps": 40362.80099828278, + "latencyMs": { + "mean": 1.2384041003145219, + "p50": 1.189, + "p95": 1.42, + "p99": 2.383, + "max": 17.063709000009112 + }, + "clientCpuPercent": 93.98545145537278, + "serverCpuPercent": 105.07909356646249, + "serverCpuUsPerRequest": 26.037574616699278, + "serverRssMiB": 118.515625, + "serverRetainedHeapMiB": 15.575546264648438, + "idleRssMiB": 86.109375, + "server": { + "type": "stats", + "elapsedMs": 5002.017834, + "cpu": { + "user": 4208974, + "system": 1047101 + }, + "memory": { + "rss": 124272640, + "heapTotal": 36536320, + "heapUsed": 17777192, + "external": 4243934, + "arrayBuffers": 278115 + }, + "retainedMemory": { + "rss": 124289024, + "heapTotal": 36012032, + "heapUsed": 16332144, + "external": 4243934, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121376 + }, + "idleMemory": { + "rss": 90292224, + "heapTotal": 33390592, + "heapUsed": 13957344, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 6, + "requests": 222902, + "errors": 0, + "elapsedMs": 5001.116582999995, + "rps": 44570.44667938712, + "latencyMs": { + "mean": 1.1215244072642898, + "p50": 1.064, + "p95": 1.598, + "p99": 2.153, + "max": 7.63795800000662 + }, + "clientCpuPercent": 98.98755443590115, + "serverCpuPercent": 105.06605977902554, + "serverCpuUsPerRequest": 23.576594198347255, + "serverRssMiB": 113.078125, + "serverRetainedHeapMiB": 13.730110168457031, + "idleRssMiB": 82.15625, + "server": { + "type": "stats", + "elapsedMs": 5001.872166, + "cpu": { + "user": 4066159, + "system": 1189111 + }, + "memory": { + "rss": 118571008, + "heapTotal": 33914880, + "heapUsed": 19131272, + "external": 4207629, + "arrayBuffers": 302731 + }, + "retainedMemory": { + "rss": 118571008, + "heapTotal": 33914880, + "heapUsed": 14397064, + "external": 4207629, + "arrayBuffers": 277690 + }, + "maxRssKiB": 115792 + }, + "idleMemory": { + "rss": 86147072, + "heapTotal": 31817728, + "heapUsed": 12358080, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 6, + "requests": 203747, + "errors": 0, + "elapsedMs": 5001.187915999966, + "rps": 40739.7209267354, + "latencyMs": { + "mean": 1.2269655013129002, + "p50": 1.173, + "p95": 1.468, + "p99": 2.362, + "max": 6.767540999979246 + }, + "clientCpuPercent": 94.20397871728426, + "serverCpuPercent": 104.95196501256004, + "serverCpuUsPerRequest": 25.766185514387942, + "serverRssMiB": 115.1875, + "serverRetainedHeapMiB": 13.892784118652344, + "idleRssMiB": 82.140625, + "server": { + "type": "stats", + "elapsedMs": 5002.081666, + "cpu": { + "user": 4192019, + "system": 1057764 + }, + "memory": { + "rss": 120782848, + "heapTotal": 34701312, + "heapUsed": 18813520, + "external": 4200693, + "arrayBuffers": 295795 + }, + "retainedMemory": { + "rss": 120864768, + "heapTotal": 34439168, + "heapUsed": 14567640, + "external": 4200693, + "arrayBuffers": 277690 + }, + "maxRssKiB": 118032 + }, + "idleMemory": { + "rss": 86130688, + "heapTotal": 31555584, + "heapUsed": 12358568, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 6, + "requests": 184748, + "errors": 0, + "elapsedMs": 5001.322624999972, + "rps": 36939.8284918684, + "latencyMs": { + "mean": 1.3531390075345773, + "p50": 1.305, + "p95": 1.51, + "p99": 2.612, + "max": 7.054000000003725 + }, + "clientCpuPercent": 89.3228918620307, + "serverCpuPercent": 104.37482446337177, + "serverCpuUsPerRequest": 28.259596856258256, + "serverRssMiB": 140.140625, + "serverRetainedHeapMiB": 17.24596405029297, + "idleRssMiB": 88.234375, + "server": { + "type": "stats", + "elapsedMs": 5002.072125000001, + "cpu": { + "user": 4194794, + "system": 1026110 + }, + "memory": { + "rss": 146948096, + "heapTotal": 59359232, + "heapUsed": 29880776, + "external": 4366341, + "arrayBuffers": 377243 + }, + "retainedMemory": { + "rss": 147013632, + "heapTotal": 58310656, + "heapUsed": 18083704, + "external": 4366341, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143568 + }, + "idleMemory": { + "rss": 92520448, + "heapTotal": 34979840, + "heapUsed": 15775328, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 6, + "requests": 220420, + "errors": 0, + "elapsedMs": 5001.119209000026, + "rps": 44074.134366429746, + "latencyMs": { + "mean": 1.1341251495192604, + "p50": 1.081, + "p95": 1.291, + "p99": 2.187, + "max": 5.116250000020955 + }, + "clientCpuPercent": 98.57933382447342, + "serverCpuPercent": 104.40572682449742, + "serverCpuUsPerRequest": 23.692659468287815, + "serverRssMiB": 121.203125, + "serverRetainedHeapMiB": 15.319557189941406, + "idleRssMiB": 84.578125, + "server": { + "type": "stats", + "elapsedMs": 5001.963167, + "cpu": { + "user": 4113690, + "system": 1108646 + }, + "memory": { + "rss": 127090688, + "heapTotal": 41009152, + "heapUsed": 29905336, + "external": 4262188, + "arrayBuffers": 334011 + }, + "retainedMemory": { + "rss": 127123456, + "heapTotal": 39436288, + "heapUsed": 16063720, + "external": 4262188, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124144 + }, + "idleMemory": { + "rss": 88686592, + "heapTotal": 33669120, + "heapUsed": 14158272, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 6, + "requests": 204589, + "errors": 0, + "elapsedMs": 5001.261959000025, + "rps": 40907.47528867823, + "latencyMs": { + "mean": 1.221942230031814, + "p50": 1.166, + "p95": 1.392, + "p99": 2.349, + "max": 6.4242499999236315 + }, + "clientCpuPercent": 95.12489125747025, + "serverCpuPercent": 104.30824256371915, + "serverCpuUsPerRequest": 25.501630097414818, + "serverRssMiB": 122.9375, + "serverRetainedHeapMiB": 15.668983459472656, + "idleRssMiB": 84.6875, + "server": { + "type": "stats", + "elapsedMs": 5001.860708, + "cpu": { + "user": 4169180, + "system": 1048173 + }, + "memory": { + "rss": 128909312, + "heapTotal": 41533440, + "heapUsed": 27021624, + "external": 4234172, + "arrayBuffers": 305995 + }, + "retainedMemory": { + "rss": 128925696, + "heapTotal": 40222720, + "heapUsed": 16430120, + "external": 4234172, + "arrayBuffers": 277690 + }, + "maxRssKiB": 125904 + }, + "idleMemory": { + "rss": 88801280, + "heapTotal": 33931264, + "heapUsed": 14158736, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 6, + "requests": 211027, + "errors": 0, + "elapsedMs": 5001.181624999968, + "rps": 42195.42816543907, + "latencyMs": { + "mean": 1.184626394693658, + "p50": 1.131, + "p95": 1.361, + "p99": 2.274, + "max": 5.456666999962181 + }, + "clientCpuPercent": 96.4935361650664, + "serverCpuPercent": 104.23496097329894, + "serverCpuUsPerRequest": 24.706795812858072, + "serverRssMiB": 114.25, + "serverRetainedHeapMiB": 13.702362060546875, + "idleRssMiB": 80.53125, + "server": { + "type": "stats", + "elapsedMs": 5001.969542000001, + "cpu": { + "user": 4085079, + "system": 1128722 + }, + "memory": { + "rss": 119799808, + "heapTotal": 34357248, + "heapUsed": 15635296, + "external": 4266805, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119881728, + "heapTotal": 34095104, + "heapUsed": 14367968, + "external": 4266805, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117072 + }, + "idleMemory": { + "rss": 84443136, + "heapTotal": 31473664, + "heapUsed": 12355424, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 6, + "requests": 239161, + "errors": 0, + "elapsedMs": 5000.594875000068, + "rps": 47826.50984099102, + "latencyMs": { + "mean": 1.0452351406121794, + "p50": 1, + "p95": 1.397, + "p99": 2.024, + "max": 6.022084000054747 + }, + "clientCpuPercent": 100.48014537470267, + "serverCpuPercent": 101.9996239410349, + "serverCpuUsPerRequest": 21.330016181568066, + "serverRssMiB": 108.734375, + "serverRetainedHeapMiB": 11.724632263183594, + "idleRssMiB": 74.796875, + "server": { + "type": "stats", + "elapsedMs": 5001.300792, + "cpu": { + "user": 3698785, + "system": 1402523 + }, + "memory": { + "rss": 114016256, + "heapTotal": 31473664, + "heapUsed": 16549160, + "external": 4206287, + "arrayBuffers": 307893 + }, + "retainedMemory": { + "rss": 114065408, + "heapTotal": 31473664, + "heapUsed": 12294168, + "external": 4206287, + "arrayBuffers": 277690 + }, + "maxRssKiB": 111392 + }, + "idleMemory": { + "rss": 78430208, + "heapTotal": 20987904, + "heapUsed": 10622616, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 6, + "requests": 233819, + "errors": 0, + "elapsedMs": 5000.734959000023, + "rps": 46756.92711512066, + "latencyMs": { + "mean": 1.0690970772947097, + "p50": 0.944, + "p95": 1.847, + "p99": 1.984, + "max": 5.964917000033893 + }, + "clientCpuPercent": 100.15181850392437, + "serverCpuPercent": 104.0278730874788, + "serverCpuUsPerRequest": 22.251976956534754, + "serverRssMiB": 111.5, + "serverRetainedHeapMiB": 11.981666564941406, + "idleRssMiB": 75.21875, + "server": { + "type": "stats", + "elapsedMs": 5001.481666, + "cpu": { + "user": 3943278, + "system": 1259657 + }, + "memory": { + "rss": 116916224, + "heapTotal": 31735808, + "heapUsed": 15211944, + "external": 4189259, + "arrayBuffers": 290865 + }, + "retainedMemory": { + "rss": 117047296, + "heapTotal": 31473664, + "heapUsed": 12563688, + "external": 4189259, + "arrayBuffers": 277690 + }, + "maxRssKiB": 114304 + }, + "idleMemory": { + "rss": 78872576, + "heapTotal": 20463616, + "heapUsed": 10621840, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 6, + "requests": 157250, + "errors": 0, + "elapsedMs": 5001.552790999995, + "rps": 31440.235976907472, + "latencyMs": { + "mean": 1.5898334136280359, + "p50": 1.534, + "p95": 1.878, + "p99": 3.07, + "max": 6.190375000005588 + }, + "clientCpuPercent": 78.98163160665526, + "serverCpuPercent": 104.38574816268418, + "serverCpuUsPerRequest": 33.20518282988871, + "serverRssMiB": 220.046875, + "serverRetainedHeapMiB": 15.74420166015625, + "idleRssMiB": 85.953125, + "server": { + "type": "stats", + "elapsedMs": 5002.134, + "cpu": { + "user": 4299952, + "system": 921563 + }, + "memory": { + "rss": 230735872, + "heapTotal": 158695424, + "heapUsed": 53937712, + "external": 4720941, + "arrayBuffers": 755122 + }, + "retainedMemory": { + "rss": 230326272, + "heapTotal": 156860416, + "heapUsed": 16508992, + "external": 4720941, + "arrayBuffers": 277690 + }, + "maxRssKiB": 225456 + }, + "idleMemory": { + "rss": 90128384, + "heapTotal": 33914880, + "heapUsed": 14019296, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 6, + "requests": 181052, + "errors": 0, + "elapsedMs": 5001.403000000049, + "rps": 36200.242212034944, + "latencyMs": { + "mean": 1.3808115435729944, + "p50": 1.332, + "p95": 1.526, + "p99": 2.67, + "max": 6.690000000060536 + }, + "clientCpuPercent": 88.6637809430665, + "serverCpuPercent": 104.35190010416243, + "serverCpuUsPerRequest": 28.82972847579701, + "serverRssMiB": 119.140625, + "serverRetainedHeapMiB": 13.823318481445312, + "idleRssMiB": 81.75, + "server": { + "type": "stats", + "elapsedMs": 5001.998041999999, + "cpu": { + "user": 4235327, + "system": 984353 + }, + "memory": { + "rss": 124928000, + "heapTotal": 39682048, + "heapUsed": 24585920, + "external": 4268917, + "arrayBuffers": 381034 + }, + "retainedMemory": { + "rss": 124502016, + "heapTotal": 37847040, + "heapUsed": 14494800, + "external": 4268917, + "arrayBuffers": 277690 + }, + "maxRssKiB": 122096 + }, + "idleMemory": { + "rss": 85721088, + "heapTotal": 31293440, + "heapUsed": 12363304, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 6, + "requests": 167518, + "errors": 0, + "elapsedMs": 5001.443791999947, + "rps": 33493.9283468412, + "latencyMs": { + "mean": 1.4923237874796005, + "p50": 1.436, + "p95": 1.698, + "p99": 2.891, + "max": 7.116042000008747 + }, + "clientCpuPercent": 83.48773221602656, + "serverCpuPercent": 104.34873615364207, + "serverCpuUsPerRequest": 31.158365071216227, + "serverRssMiB": 121.140625, + "serverRetainedHeapMiB": 14.084930419921875, + "idleRssMiB": 81.5625, + "server": { + "type": "stats", + "elapsedMs": 5002.060583, + "cpu": { + "user": 4331239, + "system": 888348 + }, + "memory": { + "rss": 127025152, + "heapTotal": 38633472, + "heapUsed": 22933608, + "external": 4255589, + "arrayBuffers": 367706 + }, + "retainedMemory": { + "rss": 127025152, + "heapTotal": 37322752, + "heapUsed": 14769120, + "external": 4255589, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124048 + }, + "idleMemory": { + "rss": 85524480, + "heapTotal": 31293440, + "heapUsed": 12363792, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 7, + "requests": 224802, + "errors": 0, + "elapsedMs": 5001.011749999947, + "rps": 44951.30410361511, + "latencyMs": { + "mean": 1.112013243294165, + "p50": 1.06, + "p95": 1.618, + "p99": 2.153, + "max": 6.444999999948777 + }, + "clientCpuPercent": 99.03973930875192, + "serverCpuPercent": 104.28492579671824, + "serverCpuUsPerRequest": 23.20307203672565, + "serverRssMiB": 121.46875, + "serverRetainedHeapMiB": 15.379371643066406, + "idleRssMiB": 84.5, + "server": { + "type": "stats", + "elapsedMs": 5001.774667, + "cpu": { + "user": 4142099, + "system": 1073998 + }, + "memory": { + "rss": 127369216, + "heapTotal": 41271296, + "heapUsed": 29712304, + "external": 4260284, + "arrayBuffers": 332107 + }, + "retainedMemory": { + "rss": 127401984, + "heapTotal": 38649856, + "heapUsed": 16126440, + "external": 4260284, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124416 + }, + "idleMemory": { + "rss": 88604672, + "heapTotal": 33669120, + "heapUsed": 14158000, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 7, + "requests": 209127, + "errors": 0, + "elapsedMs": 5001.1893329999875, + "rps": 41815.45350024854, + "latencyMs": { + "mean": 1.195421534354617, + "p50": 1.148, + "p95": 1.299, + "p99": 2.309, + "max": 5.630499999970198 + }, + "clientCpuPercent": 95.72756960849121, + "serverCpuPercent": 103.58647123409925, + "serverCpuUsPerRequest": 24.77613125038852, + "serverRssMiB": 122.625, + "serverRetainedHeapMiB": 15.577156066894531, + "idleRssMiB": 84.4375, + "server": { + "type": "stats", + "elapsedMs": 5001.964, + "cpu": { + "user": 4215152, + "system": 966206 + }, + "memory": { + "rss": 128581632, + "heapTotal": 40484864, + "heapUsed": 27901328, + "external": 4241788, + "arrayBuffers": 313611 + }, + "retainedMemory": { + "rss": 128630784, + "heapTotal": 39960576, + "heapUsed": 16333832, + "external": 4241788, + "arrayBuffers": 277690 + }, + "maxRssKiB": 125616 + }, + "idleMemory": { + "rss": 88539136, + "heapTotal": 33669120, + "heapUsed": 14159160, + "external": 4205824, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 7, + "requests": 186695, + "errors": 0, + "elapsedMs": 5001.325208000024, + "rps": 37329.106233957005, + "latencyMs": { + "mean": 1.3390383040412828, + "p50": 1.289, + "p95": 1.507, + "p99": 2.589, + "max": 6.50062499998603 + }, + "clientCpuPercent": 90.27279395425346, + "serverCpuPercent": 104.08611710848444, + "serverCpuUsPerRequest": 27.887061785264738, + "serverRssMiB": 140.171875, + "serverRetainedHeapMiB": 17.28986358642578, + "idleRssMiB": 88.21875, + "server": { + "type": "stats", + "elapsedMs": 5001.987916, + "cpu": { + "user": 4228872, + "system": 977503 + }, + "memory": { + "rss": 146980864, + "heapTotal": 59097088, + "heapUsed": 35050408, + "external": 4399525, + "arrayBuffers": 410427 + }, + "retainedMemory": { + "rss": 147013632, + "heapTotal": 57262080, + "heapUsed": 18129736, + "external": 4399525, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143568 + }, + "idleMemory": { + "rss": 92504064, + "heapTotal": 35241984, + "heapUsed": 15781696, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 7, + "requests": 240498, + "errors": 0, + "elapsedMs": 5000.592708000098, + "rps": 48093.8988722765, + "latencyMs": { + "mean": 1.03938884964956, + "p50": 0.99, + "p95": 1.389, + "p99": 2.005, + "max": 6.347792000044137 + }, + "clientCpuPercent": 100.45383204202163, + "serverCpuPercent": 101.9256493398808, + "serverCpuUsPerRequest": 21.19558166803882, + "serverRssMiB": 109.265625, + "serverRetainedHeapMiB": 11.784309387207031, + "idleRssMiB": 75.578125, + "server": { + "type": "stats", + "elapsedMs": 5001.189625, + "cpu": { + "user": 3707317, + "system": 1390178 + }, + "memory": { + "rss": 114573312, + "heapTotal": 31473664, + "heapUsed": 19194592, + "external": 4232603, + "arrayBuffers": 334209 + }, + "retainedMemory": { + "rss": 114606080, + "heapTotal": 31473664, + "heapUsed": 12356744, + "external": 4232603, + "arrayBuffers": 277690 + }, + "maxRssKiB": 111920 + }, + "idleMemory": { + "rss": 79249408, + "heapTotal": 21512192, + "heapUsed": 10624976, + "external": 4686097, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 7, + "requests": 234252, + "errors": 0, + "elapsedMs": 5000.672791999998, + "rps": 46844.09673329414, + "latencyMs": { + "mean": 1.0671223836638022, + "p50": 0.945, + "p95": 1.846, + "p99": 1.979, + "max": 5.4303340000333264 + }, + "clientCpuPercent": 100.14208504126424, + "serverCpuPercent": 104.29403327300444, + "serverCpuUsPerRequest": 22.26693475402558, + "serverRssMiB": 111.125, + "serverRetainedHeapMiB": 12.048995971679688, + "idleRssMiB": 74.359375, + "server": { + "type": "stats", + "elapsedMs": 5001.315834, + "cpu": { + "user": 3948925, + "system": 1267149 + }, + "memory": { + "rss": 116523008, + "heapTotal": 31473664, + "heapUsed": 14405704, + "external": 4182551, + "arrayBuffers": 284157 + }, + "retainedMemory": { + "rss": 116539392, + "heapTotal": 31473664, + "heapUsed": 12634288, + "external": 4182551, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113808 + }, + "idleMemory": { + "rss": 77971456, + "heapTotal": 20725760, + "heapUsed": 10622760, + "external": 4176041, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 7, + "requests": 213862, + "errors": 0, + "elapsedMs": 5001.141583000077, + "rps": 42762.63658020832, + "latencyMs": { + "mean": 1.168953320991959, + "p50": 1.114, + "p95": 1.373, + "p99": 2.253, + "max": 6.2269999999552965 + }, + "clientCpuPercent": 97.0094511319482, + "serverCpuPercent": 104.27473593776293, + "serverCpuUsPerRequest": 24.387483517408423, + "serverRssMiB": 113.703125, + "serverRetainedHeapMiB": 13.813774108886719, + "idleRssMiB": 80.328125, + "server": { + "type": "stats", + "elapsedMs": 5001.744624999999, + "cpu": { + "user": 4086130, + "system": 1129426 + }, + "memory": { + "rss": 119226368, + "heapTotal": 33832960, + "heapUsed": 18465472, + "external": 4285510, + "arrayBuffers": 296412 + }, + "retainedMemory": { + "rss": 119275520, + "heapTotal": 33832960, + "heapUsed": 14484792, + "external": 4285510, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116480 + }, + "idleMemory": { + "rss": 84230144, + "heapTotal": 31211520, + "heapUsed": 12357072, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 7, + "requests": 183054, + "errors": 0, + "elapsedMs": 5001.366875000065, + "rps": 36600.794257869275, + "latencyMs": { + "mean": 1.3657213053033972, + "p50": 1.312, + "p95": 1.562, + "p99": 2.633, + "max": 6.726583000039682 + }, + "clientCpuPercent": 89.3817852544549, + "serverCpuPercent": 104.25952985813296, + "serverCpuUsPerRequest": 28.48883935887771, + "serverRssMiB": 119.390625, + "serverRetainedHeapMiB": 13.815422058105469, + "idleRssMiB": 81.8125, + "server": { + "type": "stats", + "elapsedMs": 5001.937, + "cpu": { + "user": 4291865, + "system": 923131 + }, + "memory": { + "rss": 125190144, + "heapTotal": 39944192, + "heapUsed": 22574736, + "external": 4250421, + "arrayBuffers": 362538 + }, + "retainedMemory": { + "rss": 125222912, + "heapTotal": 37060608, + "heapUsed": 14486520, + "external": 4250421, + "arrayBuffers": 277690 + }, + "maxRssKiB": 122288 + }, + "idleMemory": { + "rss": 85786624, + "heapTotal": 31817728, + "heapUsed": 12363064, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 7, + "requests": 167796, + "errors": 0, + "elapsedMs": 5001.414667000063, + "rps": 33549.70766714031, + "latencyMs": { + "mean": 1.4899280526173846, + "p50": 1.444, + "p95": 1.635, + "p99": 2.888, + "max": 6.154458999983035 + }, + "clientCpuPercent": 83.38220838828015, + "serverCpuPercent": 104.43433679858263, + "serverCpuUsPerRequest": 31.131850580466757, + "serverRssMiB": 121.453125, + "serverRetainedHeapMiB": 14.076332092285156, + "idleRssMiB": 82, + "server": { + "type": "stats", + "elapsedMs": 5001.994708, + "cpu": { + "user": 4302943, + "system": 920857 + }, + "memory": { + "rss": 127352832, + "heapTotal": 39419904, + "heapUsed": 23333272, + "external": 4261029, + "arrayBuffers": 373146 + }, + "retainedMemory": { + "rss": 127074304, + "heapTotal": 38371328, + "heapUsed": 14760104, + "external": 4261029, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124448 + }, + "idleMemory": { + "rss": 85983232, + "heapTotal": 31555584, + "heapUsed": 12363952, + "external": 4165530, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 7, + "requests": 155251, + "errors": 0, + "elapsedMs": 5001.599209000007, + "rps": 31040.272023523463, + "latencyMs": { + "mean": 1.6103464502386138, + "p50": 1.548, + "p95": 1.909, + "p99": 3.105, + "max": 7.933707999996841 + }, + "clientCpuPercent": 78.19622957717871, + "serverCpuPercent": 104.5106072994773, + "serverCpuUsPerRequest": 33.67560273363779, + "serverRssMiB": 221.109375, + "serverRetainedHeapMiB": 15.587318420410156, + "idleRssMiB": 85.90625, + "server": { + "type": "stats", + "elapsedMs": 5002.526667, + "cpu": { + "user": 4307008, + "system": 921163 + }, + "memory": { + "rss": 231849984, + "heapTotal": 157908992, + "heapUsed": 52332784, + "external": 4709789, + "arrayBuffers": 743970 + }, + "retainedMemory": { + "rss": 231849984, + "heapTotal": 156860416, + "heapUsed": 16344488, + "external": 4709789, + "arrayBuffers": 277690 + }, + "maxRssKiB": 226416 + }, + "idleMemory": { + "rss": 90079232, + "heapTotal": 32866304, + "heapUsed": 14019312, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native", + "round": 7, + "requests": 222130, + "errors": 0, + "elapsedMs": 5001.073958999943, + "rps": 44416.45970867005, + "latencyMs": { + "mean": 1.1254221792869838, + "p50": 1.07, + "p95": 1.453, + "p99": 2.168, + "max": 10.828042000066489 + }, + "clientCpuPercent": 98.79585945951527, + "serverCpuPercent": 104.88039794716492, + "serverCpuUsPerRequest": 23.61564849412506, + "serverRssMiB": 113.171875, + "serverRetainedHeapMiB": 13.803535461425781, + "idleRssMiB": 81.765625, + "server": { + "type": "stats", + "elapsedMs": 5001.643875, + "cpu": { + "user": 4090583, + "system": 1155161 + }, + "memory": { + "rss": 118669312, + "heapTotal": 33914880, + "heapUsed": 16873608, + "external": 4191717, + "arrayBuffers": 286819 + }, + "retainedMemory": { + "rss": 118669312, + "heapTotal": 33914880, + "heapUsed": 14474056, + "external": 4191717, + "arrayBuffers": 277690 + }, + "maxRssKiB": 115888 + }, + "idleMemory": { + "rss": 85737472, + "heapTotal": 31555584, + "heapUsed": 12357048, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 7, + "requests": 207388, + "errors": 0, + "elapsedMs": 5001.240166999982, + "rps": 41467.314720941045, + "latencyMs": { + "mean": 1.2054532490742085, + "p50": 1.15, + "p95": 1.392, + "p99": 2.342, + "max": 5.48741699999664 + }, + "clientCpuPercent": 95.4848965564588, + "serverCpuPercent": 105.01876982354973, + "serverCpuUsPerRequest": 25.329589947345074, + "serverRssMiB": 115.25, + "serverRetainedHeapMiB": 13.963447570800781, + "idleRssMiB": 82.09375, + "server": { + "type": "stats", + "elapsedMs": 5002.013457999999, + "cpu": { + "user": 4238888, + "system": 1014165 + }, + "memory": { + "rss": 120848384, + "heapTotal": 34177024, + "heapUsed": 20771112, + "external": 4213613, + "arrayBuffers": 308715 + }, + "retainedMemory": { + "rss": 120864768, + "heapTotal": 34177024, + "heapUsed": 14641736, + "external": 4213613, + "arrayBuffers": 277690 + }, + "maxRssKiB": 118032 + }, + "idleMemory": { + "rss": 86081536, + "heapTotal": 31555584, + "heapUsed": 12360232, + "external": 4182545, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 7, + "requests": 202585, + "errors": 0, + "elapsedMs": 5001.2191250000615, + "rps": 40507.12335064853, + "latencyMs": { + "mean": 1.2340323623662932, + "p50": 1.188, + "p95": 1.421, + "p99": 2.38, + "max": 5.261667000013404 + }, + "clientCpuPercent": 93.98246472553714, + "serverCpuPercent": 104.85482955600334, + "serverCpuUsPerRequest": 25.888585038378952, + "serverRssMiB": 118.515625, + "serverRetainedHeapMiB": 15.622993469238281, + "idleRssMiB": 86.234375, + "server": { + "type": "stats", + "elapsedMs": 5001.809666, + "cpu": { + "user": 4191430, + "system": 1053209 + }, + "memory": { + "rss": 124272640, + "heapTotal": 36012032, + "heapUsed": 19595312, + "external": 4255358, + "arrayBuffers": 289539 + }, + "retainedMemory": { + "rss": 124272640, + "heapTotal": 35487744, + "heapUsed": 16381896, + "external": 4255358, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121360 + }, + "idleMemory": { + "rss": 90423296, + "heapTotal": 32866304, + "heapUsed": 13957864, + "external": 4440228, + "arrayBuffers": 212115 + } + } + ], + "finishedAt": "2026-10-27T15:55:37.734Z", + "elapsedSeconds": 683.9340245000001 +} From 174a9e818774a88db62af026118c3bdfeb54b9b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=AE=87=E7=BF=94?= Date: Wed, 28 Oct 2026 00:02:51 +0800 Subject: [PATCH 04/12] docs(bench): distinguish the recorded Mac baseline from local reruns --- .gitignore | 3 ++- CONTRIBUTING.md | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 8885d76..9c1635d 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,8 @@ coverage/ .stryker-tmp/ reports/ # 本地性能评测数据与生成报告 -/benchmarks/results/ +/benchmarks/results/* +!/benchmarks/results/mac-post.json # 日志 *.log diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 147fdbd..2ef2d22 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,9 +52,9 @@ macOS 本地复测可先聚焦 50 并发的 POST,增加预热和重复轮数 ```bash BENCH_SCENARIOS=post BENCH_CONCURRENCY=50 \ BENCH_ROUNDS=7 BENCH_MS=5000 BENCH_WARMUP_MS=3000 \ - BENCH_OUT=benchmarks/results/mac-post.json node benchmarks/run.mjs -node benchmarks/report.mjs benchmarks/results/mac-post.json -open benchmarks/results/mac-post.html + BENCH_OUT=benchmarks/results/mac-post-local.json node benchmarks/run.mjs +node benchmarks/report.mjs benchmarks/results/mac-post-local.json +open benchmarks/results/mac-post-local.html ``` 同一轮对照使用相同 Node 版本和 lockfile,尽量减少其他 CPU 密集任务。比较 Mac 和云端 @@ -77,7 +77,12 @@ BENCH_ROUNDS=1 BENCH_MS=100 BENCH_WARMUP_MS=100 \ BENCH_OUT=benchmarks/results/smoke.json node benchmarks/run.mjs ``` -`benchmarks/results/` 下的 JSON、CSV 和 HTML 都是被忽略的本地生成物,不随工具提交。 +仓库保留 [mac-post.json](benchmarks/results/mac-post.json) 作为 erest 3.4.0 的参考基线: +Apple M2、Node.js 24.22.1,四框架各三种实现、50 并发 POST、每组七轮,共 84 次采样。 +可运行 `node benchmarks/report.mjs benchmarks/results/mac-post.json` 重新生成报告; +复测使用上面的 `mac-post-local.json`,避免覆盖已记录的基线。 + +除这份明确保留的基线外,`benchmarks/results/` 下的 JSON、CSV 和 HTML 都是被忽略的本地生成物。 短测结果不是线上容量结论;只有在独立复测中出现一致趋势后,才适合讨论运行时优化。 ## 合约专项 From fa6a119dd937ec6648f05da2487a1295c14bf70a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=AE=87=E7=BF=94?= Date: Wed, 28 Oct 2026 00:07:15 +0800 Subject: [PATCH 05/12] bench: remove temporary Mac results and ignore all generated reports --- .gitignore | 3 +- CONTRIBUTING.md | 13 +- benchmarks/results/mac-post.json | 4593 ------------------------------ 3 files changed, 5 insertions(+), 4604 deletions(-) delete mode 100644 benchmarks/results/mac-post.json diff --git a/.gitignore b/.gitignore index 9c1635d..8885d76 100644 --- a/.gitignore +++ b/.gitignore @@ -24,8 +24,7 @@ coverage/ .stryker-tmp/ reports/ # 本地性能评测数据与生成报告 -/benchmarks/results/* -!/benchmarks/results/mac-post.json +/benchmarks/results/ # 日志 *.log diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2ef2d22..8b3750c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,9 +52,9 @@ macOS 本地复测可先聚焦 50 并发的 POST,增加预热和重复轮数 ```bash BENCH_SCENARIOS=post BENCH_CONCURRENCY=50 \ BENCH_ROUNDS=7 BENCH_MS=5000 BENCH_WARMUP_MS=3000 \ - BENCH_OUT=benchmarks/results/mac-post-local.json node benchmarks/run.mjs -node benchmarks/report.mjs benchmarks/results/mac-post-local.json -open benchmarks/results/mac-post-local.html + BENCH_OUT=benchmarks/results/mac-post.json node benchmarks/run.mjs +node benchmarks/report.mjs benchmarks/results/mac-post.json +open benchmarks/results/mac-post.html ``` 同一轮对照使用相同 Node 版本和 lockfile,尽量减少其他 CPU 密集任务。比较 Mac 和云端 @@ -77,12 +77,7 @@ BENCH_ROUNDS=1 BENCH_MS=100 BENCH_WARMUP_MS=100 \ BENCH_OUT=benchmarks/results/smoke.json node benchmarks/run.mjs ``` -仓库保留 [mac-post.json](benchmarks/results/mac-post.json) 作为 erest 3.4.0 的参考基线: -Apple M2、Node.js 24.22.1,四框架各三种实现、50 并发 POST、每组七轮,共 84 次采样。 -可运行 `node benchmarks/report.mjs benchmarks/results/mac-post.json` 重新生成报告; -复测使用上面的 `mac-post-local.json`,避免覆盖已记录的基线。 - -除这份明确保留的基线外,`benchmarks/results/` 下的 JSON、CSV 和 HTML 都是被忽略的本地生成物。 +`benchmarks/results/` 下的 JSON、CSV 和 HTML 都是被忽略的本地临时生成物,不随工具提交。 短测结果不是线上容量结论;只有在独立复测中出现一致趋势后,才适合讨论运行时优化。 ## 合约专项 diff --git a/benchmarks/results/mac-post.json b/benchmarks/results/mac-post.json deleted file mode 100644 index 6e2f5c4..0000000 --- a/benchmarks/results/mac-post.json +++ /dev/null @@ -1,4593 +0,0 @@ -{ - "startedAt": "2026-10-27T15:44:13.785Z", - "commit": "6ec7a1d93c43b81ffcd7761d69fb2ac2dede5470", - "harnessSha256": { - "fixture.mjs": "064fd8eb68b46d1b567bbea84b7655948def3687c5f9e68438c1bfdc511259e1", - "load.mjs": "ce51b4f707385179b4c69bfda7babe2534083005280e9819ddd207f97dafda5a", - "server.mjs": "45233296ea80835e9b5a7b17059d0e27d847976bc77161ec07ecf348104a1dcd", - "run.mjs": "2da2da4ff2a006f584c996e47404327b6beaf879fe30a582a2aca69e1d4a93e0" - }, - "environment": { - "node": "v24.22.1", - "os": "Darwin 27.2.0 arm64", - "platform": "darwin", - "cpu": "Apple M2", - "logicalCpus": 8, - "availableParallelism": 8, - "systemMemoryBytes": 17179869184, - "cpuMax": null, - "memoryMax": null, - "versions": { - "erest": "3.4.0", - "packages/erest-express/": "3.4.0", - "packages/erest-koa/": "3.4.0", - "packages/erest-leizmweb/": "3.4.0", - "node_modules/express/": "5.2.1", - "node_modules/koa/": "3.0.0", - "node_modules/koa-router/": "13.1.1", - "node_modules/koa-bodyparser/": "4.4.1", - "node_modules/@leizm/web/": "2.7.3", - "node_modules/zod/": "4.4.3", - "packages/erest-h3/": "3.4.0", - "node_modules/h3/": "2.0.8" - } - }, - "config": { - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "scenarios": [ - "post" - ], - "concurrency": [ - 50 - ], - "rounds": 7, - "durationMs": 5000, - "warmupMs": 3000, - "serverCpu": null - }, - "samples": [ - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 1, - "requests": 182111, - "errors": 0, - "elapsedMs": 5001.429542000001, - "rps": 36411.78956350475, - "latencyMs": { - "mean": 1.3727588616832536, - "p50": 1.316, - "p95": 1.546, - "p99": 2.648, - "max": 8.232792000000245 - }, - "clientCpuPercent": 91.3568603062408, - "serverCpuPercent": 104.34635369566111, - "serverCpuUsPerRequest": 28.66166239271653, - "serverRssMiB": 119.59375, - "serverRetainedHeapMiB": 13.760223388671875, - "idleRssMiB": 81.59375, - "server": { - "type": "stats", - "elapsedMs": 5002.191083, - "cpu": { - "user": 4249725, - "system": 969879 - }, - "memory": { - "rss": 125403136, - "heapTotal": 39944192, - "heapUsed": 22184184, - "external": 4245525, - "arrayBuffers": 357642 - }, - "retainedMemory": { - "rss": 125419520, - "heapTotal": 37322752, - "heapUsed": 14428640, - "external": 4245525, - "arrayBuffers": 277690 - }, - "maxRssKiB": 122480 - }, - "idleMemory": { - "rss": 85557248, - "heapTotal": 31555584, - "heapUsed": 12361968, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 164512, - "errors": 0, - "elapsedMs": 5001.457833999999, - "rps": 32892.80954877686, - "latencyMs": { - "mean": 1.5196738502905471, - "p50": 1.463, - "p95": 1.688, - "p99": 2.919, - "max": 6.468374999998559 - }, - "clientCpuPercent": 82.4259673244703, - "serverCpuPercent": 104.4141893461841, - "serverCpuUsPerRequest": 31.75125826687415, - "serverRssMiB": 121.65625, - "serverRetainedHeapMiB": 14.041633605957031, - "idleRssMiB": 81.59375, - "server": { - "type": "stats", - "elapsedMs": 5002.637124999999, - "cpu": { - "user": 4304698, - "system": 918765 - }, - "memory": { - "rss": 127565824, - "heapTotal": 39419904, - "heapUsed": 25519008, - "external": 4344653, - "arrayBuffers": 456770 - }, - "retainedMemory": { - "rss": 127729664, - "heapTotal": 38633472, - "heapUsed": 14723720, - "external": 4344653, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124736 - }, - "idleMemory": { - "rss": 85557248, - "heapTotal": 31293440, - "heapUsed": 12363840, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 156953, - "errors": 0, - "elapsedMs": 5001.527332999998, - "rps": 31381.014148303577, - "latencyMs": { - "mean": 1.5928683577886138, - "p50": 1.537, - "p95": 1.907, - "p99": 3.081, - "max": 6.412250000001222 - }, - "clientCpuPercent": 78.55996255534212, - "serverCpuPercent": 104.37932238922829, - "serverCpuUsPerRequest": 33.269443718820284, - "serverRssMiB": 220.890625, - "serverRetainedHeapMiB": 15.656532287597656, - "idleRssMiB": 85.953125, - "server": { - "type": "stats", - "elapsedMs": 5002.656542, - "cpu": { - "user": 4317470, - "system": 904269 - }, - "memory": { - "rss": 231620608, - "heapTotal": 157908992, - "heapUsed": 47001208, - "external": 4676605, - "arrayBuffers": 710786 - }, - "retainedMemory": { - "rss": 231211008, - "heapTotal": 156598272, - "heapUsed": 16417064, - "external": 4676605, - "arrayBuffers": 277690 - }, - "maxRssKiB": 226304 - }, - "idleMemory": { - "rss": 90128384, - "heapTotal": 33390592, - "heapUsed": 14019096, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 1, - "requests": 223352, - "errors": 0, - "elapsedMs": 5001.085666999999, - "rps": 44660.70266978293, - "latencyMs": { - "mean": 1.1192465858420773, - "p50": 1.06, - "p95": 1.708, - "p99": 2.147, - "max": 19.33366599999863 - }, - "clientCpuPercent": 99.1904224463268, - "serverCpuPercent": 105.04185125722444, - "serverCpuUsPerRequest": 23.523353271965327, - "serverRssMiB": 113.359375, - "serverRetainedHeapMiB": 13.743667602539062, - "idleRssMiB": 81.796875, - "server": { - "type": "stats", - "elapsedMs": 5001.804459000001, - "cpu": { - "user": 4071773, - "system": 1182215 - }, - "memory": { - "rss": 118865920, - "heapTotal": 33914880, - "heapUsed": 19807744, - "external": 4212661, - "arrayBuffers": 307763 - }, - "retainedMemory": { - "rss": 118865920, - "heapTotal": 33914880, - "heapUsed": 14411280, - "external": 4212661, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116080 - }, - "idleMemory": { - "rss": 85770240, - "heapTotal": 31555584, - "heapUsed": 12356928, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 204455, - "errors": 0, - "elapsedMs": 5001.166333000001, - "rps": 40881.46371995501, - "latencyMs": { - "mean": 1.222736304966856, - "p50": 1.165, - "p95": 1.484, - "p99": 2.355, - "max": 4.885749999994005 - }, - "clientCpuPercent": 95.01187690251531, - "serverCpuPercent": 104.88981131892527, - "serverCpuUsPerRequest": 25.661363136142427, - "serverRssMiB": 115.15625, - "serverRetainedHeapMiB": 13.962860107421875, - "idleRssMiB": 81.859375, - "server": { - "type": "stats", - "elapsedMs": 5002.005375, - "cpu": { - "user": 4219779, - "system": 1026815 - }, - "memory": { - "rss": 120750080, - "heapTotal": 34439168, - "heapUsed": 22328040, - "external": 4223269, - "arrayBuffers": 318371 - }, - "retainedMemory": { - "rss": 120799232, - "heapTotal": 34439168, - "heapUsed": 14641120, - "external": 4223269, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117968 - }, - "idleMemory": { - "rss": 85835776, - "heapTotal": 31555584, - "heapUsed": 12356848, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 199656, - "errors": 0, - "elapsedMs": 5001.201249999998, - "rps": 39921.608833477774, - "latencyMs": { - "mean": 1.2521149202528172, - "p50": 1.188, - "p95": 1.622, - "p99": 2.43, - "max": 6.562374999994063 - }, - "clientCpuPercent": 93.9618656617748, - "serverCpuPercent": 105.32543030667199, - "serverCpuUsPerRequest": 26.386770244821093, - "serverRssMiB": 118.5625, - "serverRetainedHeapMiB": 15.628593444824219, - "idleRssMiB": 86.734375, - "server": { - "type": "stats", - "elapsedMs": 5001.904084, - "cpu": { - "user": 4264121, - "system": 1004156 - }, - "memory": { - "rss": 124321792, - "heapTotal": 36012032, - "heapUsed": 22610080, - "external": 4272358, - "arrayBuffers": 306539 - }, - "retainedMemory": { - "rss": 124354560, - "heapTotal": 36012032, - "heapUsed": 16387768, - "external": 4272358, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121440 - }, - "idleMemory": { - "rss": 90947584, - "heapTotal": 33128448, - "heapUsed": 13959120, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 1, - "requests": 221530, - "errors": 0, - "elapsedMs": 5001.159333999996, - "rps": 44295.72929099567, - "latencyMs": { - "mean": 1.12844304347039, - "p50": 1.071, - "p95": 1.432, - "p99": 2.166, - "max": 5.333041999998386 - }, - "clientCpuPercent": 98.75722147907882, - "serverCpuPercent": 104.41942377816582, - "serverCpuUsPerRequest": 23.57655396560285, - "serverRssMiB": 121.578125, - "serverRetainedHeapMiB": 15.368576049804688, - "idleRssMiB": 84.625, - "server": { - "type": "stats", - "elapsedMs": 5001.860584, - "cpu": { - "user": 4072260, - "system": 1150654 - }, - "memory": { - "rss": 127483904, - "heapTotal": 40747008, - "heapUsed": 27319696, - "external": 4240292, - "arrayBuffers": 312115 - }, - "retainedMemory": { - "rss": 127516672, - "heapTotal": 39960576, - "heapUsed": 16115120, - "external": 4240292, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124528 - }, - "idleMemory": { - "rss": 88735744, - "heapTotal": 33406976, - "heapUsed": 14158368, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 206036, - "errors": 0, - "elapsedMs": 5001.209833000001, - "rps": 41197.23164592921, - "latencyMs": { - "mean": 1.2133394802704525, - "p50": 1.164, - "p95": 1.375, - "p99": 2.35, - "max": 6.677290999999968 - }, - "clientCpuPercent": 95.13470057995863, - "serverCpuPercent": 104.27657456885969, - "serverCpuUsPerRequest": 25.314614921664177, - "serverRssMiB": 122.46875, - "serverRetainedHeapMiB": 15.662879943847656, - "idleRssMiB": 84.8125, - "server": { - "type": "stats", - "elapsedMs": 5001.815625, - "cpu": { - "user": 4183358, - "system": 1032364 - }, - "memory": { - "rss": 128417792, - "heapTotal": 40747008, - "heapUsed": 25005744, - "external": 4219892, - "arrayBuffers": 291715 - }, - "retainedMemory": { - "rss": 128434176, - "heapTotal": 39960576, - "heapUsed": 16423720, - "external": 4219892, - "arrayBuffers": 277690 - }, - "maxRssKiB": 125424 - }, - "idleMemory": { - "rss": 88932352, - "heapTotal": 33669120, - "heapUsed": 14159224, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 186889, - "errors": 0, - "elapsedMs": 5001.346749999997, - "rps": 37367.73500057762, - "latencyMs": { - "mean": 1.3376808314025947, - "p50": 1.296, - "p95": 1.45, - "p99": 2.595, - "max": 12.733958999990136 - }, - "clientCpuPercent": 89.80609072946207, - "serverCpuPercent": 103.46740678435863, - "serverCpuUsPerRequest": 27.692662489499114, - "serverRssMiB": 140.015625, - "serverRetainedHeapMiB": 17.293617248535156, - "idleRssMiB": 88.390625, - "server": { - "type": "stats", - "elapsedMs": 5002.013833000001, - "cpu": { - "user": 4132267, - "system": 1043187 - }, - "memory": { - "rss": 146817024, - "heapTotal": 59359232, - "heapUsed": 31831648, - "external": 4379805, - "arrayBuffers": 390707 - }, - "retainedMemory": { - "rss": 146849792, - "heapTotal": 57524224, - "heapUsed": 18133672, - "external": 4379805, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143408 - }, - "idleMemory": { - "rss": 92684288, - "heapTotal": 35766272, - "heapUsed": 15776840, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 1, - "requests": 238103, - "errors": 0, - "elapsedMs": 5000.59145800001, - "rps": 47614.96754930455, - "latencyMs": { - "mean": 1.0498389779423463, - "p50": 1.002, - "p95": 1.42, - "p99": 2.025, - "max": 6.116208000006736 - }, - "clientCpuPercent": 100.40780260037772, - "serverCpuPercent": 102.00444938820557, - "serverCpuUsPerRequest": 21.42586191690151, - "serverRssMiB": 109.015625, - "serverRetainedHeapMiB": 11.713714599609375, - "idleRssMiB": 74.609375, - "server": { - "type": "stats", - "elapsedMs": 5001.313208, - "cpu": { - "user": 3701804, - "system": 1399758 - }, - "memory": { - "rss": 114311168, - "heapTotal": 31473664, - "heapUsed": 19487144, - "external": 4234925, - "arrayBuffers": 336531 - }, - "retainedMemory": { - "rss": 114311168, - "heapTotal": 31473664, - "heapUsed": 12282720, - "external": 4234925, - "arrayBuffers": 277690 - }, - "maxRssKiB": 111632 - }, - "idleMemory": { - "rss": 78233600, - "heapTotal": 20725760, - "heapUsed": 10622640, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 234261, - "errors": 0, - "elapsedMs": 5000.720207999999, - "rps": 46845.45230609712, - "latencyMs": { - "mean": 1.0670843605124223, - "p50": 0.924, - "p95": 1.795, - "p99": 1.942, - "max": 10.245332999998936 - }, - "clientCpuPercent": 100.13193683560712, - "serverCpuPercent": 104.28500610071463, - "serverCpuUsPerRequest": 22.264764514793328, - "serverRssMiB": 111.5, - "serverRetainedHeapMiB": 11.9759521484375, - "idleRssMiB": 75.453125, - "server": { - "type": "stats", - "elapsedMs": 5001.453416, - "cpu": { - "user": 3948288, - "system": 1267478 - }, - "memory": { - "rss": 116916224, - "heapTotal": 31997952, - "heapUsed": 19178632, - "external": 4221509, - "arrayBuffers": 323115 - }, - "retainedMemory": { - "rss": 116965376, - "heapTotal": 31997952, - "heapUsed": 12557696, - "external": 4221509, - "arrayBuffers": 277690 - }, - "maxRssKiB": 114224 - }, - "idleMemory": { - "rss": 79118336, - "heapTotal": 20987904, - "heapUsed": 10622672, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 212623, - "errors": 0, - "elapsedMs": 5001.1313329999975, - "rps": 42514.980279963005, - "latencyMs": { - "mean": 1.1756986696406566, - "p50": 1.121, - "p95": 1.358, - "p99": 2.258, - "max": 6.53595900000073 - }, - "clientCpuPercent": 96.71841585288763, - "serverCpuPercent": 104.34088864617844, - "serverCpuUsPerRequest": 24.545646519896717, - "serverRssMiB": 113.875, - "serverRetainedHeapMiB": 13.763381958007812, - "idleRssMiB": 80.484375, - "server": { - "type": "stats", - "elapsedMs": 5001.844499999999, - "cpu": { - "user": 4098010, - "system": 1120959 - }, - "memory": { - "rss": 119406592, - "heapTotal": 34095104, - "heapUsed": 15593696, - "external": 4266805, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119537664, - "heapTotal": 33832960, - "heapUsed": 14431952, - "external": 4266805, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116736 - }, - "idleMemory": { - "rss": 84393984, - "heapTotal": 31211520, - "heapUsed": 12355456, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 204768, - "errors": 0, - "elapsedMs": 5001.220125000007, - "rps": 40943.608735878166, - "latencyMs": { - "mean": 1.220854919831243, - "p50": 1.169, - "p95": 1.455, - "p99": 2.354, - "max": 6.182958999997936 - }, - "clientCpuPercent": 94.72674430622054, - "serverCpuPercent": 104.9736482786357, - "serverCpuUsPerRequest": 25.641970425066418, - "serverRssMiB": 115.03125, - "serverRetainedHeapMiB": 14.008010864257812, - "idleRssMiB": 81.40625, - "server": { - "type": "stats", - "elapsedMs": 5001.8791249999995, - "cpu": { - "user": 4188495, - "system": 1062160 - }, - "memory": { - "rss": 120619008, - "heapTotal": 34439168, - "heapUsed": 17393888, - "external": 4192397, - "arrayBuffers": 287499 - }, - "retainedMemory": { - "rss": 120668160, - "heapTotal": 34701312, - "heapUsed": 14688464, - "external": 4192397, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117840 - }, - "idleMemory": { - "rss": 85360640, - "heapTotal": 31555584, - "heapUsed": 12357064, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 202584, - "errors": 0, - "elapsedMs": 5001.227541999993, - "rps": 40506.8552267843, - "latencyMs": { - "mean": 1.2340100090135568, - "p50": 1.181, - "p95": 1.462, - "p99": 2.387, - "max": 13.259208000003127 - }, - "clientCpuPercent": 94.10345681088401, - "serverCpuPercent": 105.13979799252226, - "serverCpuUsPerRequest": 25.961028511629745, - "serverRssMiB": 119.03125, - "serverRetainedHeapMiB": 15.488807678222656, - "idleRssMiB": 86.5625, - "server": { - "type": "stats", - "elapsedMs": 5002.186708, - "cpu": { - "user": 4210365, - "system": 1048924 - }, - "memory": { - "rss": 124813312, - "heapTotal": 36798464, - "heapUsed": 18865584, - "external": 4250598, - "arrayBuffers": 284779 - }, - "retainedMemory": { - "rss": 124813312, - "heapTotal": 36274176, - "heapUsed": 16241192, - "external": 4250598, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121888 - }, - "idleMemory": { - "rss": 90767360, - "heapTotal": 33652736, - "heapUsed": 13957432, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 2, - "requests": 222676, - "errors": 0, - "elapsedMs": 5001.111917000002, - "rps": 44525.29831277517, - "latencyMs": { - "mean": 1.1226716233630787, - "p50": 1.068, - "p95": 1.502, - "p99": 2.164, - "max": 5.284333000003244 - }, - "clientCpuPercent": 98.7650762865341, - "serverCpuPercent": 104.81597201793953, - "serverCpuUsPerRequest": 23.543848461441737, - "serverRssMiB": 112.96875, - "serverRetainedHeapMiB": 13.791107177734375, - "idleRssMiB": 81.90625, - "server": { - "type": "stats", - "elapsedMs": 5001.766333, - "cpu": { - "user": 4074230, - "system": 1168420 - }, - "memory": { - "rss": 118456320, - "heapTotal": 34177024, - "heapUsed": 18796224, - "external": 4205181, - "arrayBuffers": 300283 - }, - "retainedMemory": { - "rss": 118456320, - "heapTotal": 34177024, - "heapUsed": 14461024, - "external": 4205181, - "arrayBuffers": 277690 - }, - "maxRssKiB": 115680 - }, - "idleMemory": { - "rss": 85884928, - "heapTotal": 31817728, - "heapUsed": 12358024, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 204878, - "errors": 0, - "elapsedMs": 5001.198833999995, - "rps": 40965.77776655544, - "latencyMs": { - "mean": 1.2202097121360291, - "p50": 1.172, - "p95": 1.333, - "p99": 2.352, - "max": 5.53970800001116 - }, - "clientCpuPercent": 95.01317899411484, - "serverCpuPercent": 103.68590145594351, - "serverCpuUsPerRequest": 25.313899003309288, - "serverRssMiB": 122.359375, - "serverRetainedHeapMiB": 15.616683959960938, - "idleRssMiB": 84.5625, - "server": { - "type": "stats", - "elapsedMs": 5001.896041, - "cpu": { - "user": 4142344, - "system": 1043917 - }, - "memory": { - "rss": 128303104, - "heapTotal": 41009152, - "heapUsed": 27063488, - "external": 4235940, - "arrayBuffers": 307763 - }, - "retainedMemory": { - "rss": 128319488, - "heapTotal": 38912000, - "heapUsed": 16375280, - "external": 4235940, - "arrayBuffers": 277690 - }, - "maxRssKiB": 125312 - }, - "idleMemory": { - "rss": 88670208, - "heapTotal": 33669120, - "heapUsed": 14158592, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 186149, - "errors": 0, - "elapsedMs": 5001.359333, - "rps": 37219.681211815856, - "latencyMs": { - "mean": 1.3430176760444483, - "p50": 1.291, - "p95": 1.526, - "p99": 2.586, - "max": 14.759457999985898 - }, - "clientCpuPercent": 89.5834052641944, - "serverCpuPercent": 104.26596548286348, - "serverCpuUsPerRequest": 28.017448388119195, - "serverRssMiB": 140.453125, - "serverRetainedHeapMiB": 17.302589416503906, - "idleRssMiB": 88.375, - "server": { - "type": "stats", - "elapsedMs": 5002.034917000001, - "cpu": { - "user": 4185569, - "system": 1029851 - }, - "memory": { - "rss": 147275776, - "heapTotal": 58834944, - "heapUsed": 32804944, - "external": 4384837, - "arrayBuffers": 395739 - }, - "retainedMemory": { - "rss": 147308544, - "heapTotal": 58048512, - "heapUsed": 18143080, - "external": 4384837, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143856 - }, - "idleMemory": { - "rss": 92667904, - "heapTotal": 35241984, - "heapUsed": 15776208, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 2, - "requests": 221179, - "errors": 0, - "elapsedMs": 5001.136041999998, - "rps": 44225.751537754324, - "latencyMs": { - "mean": 1.1302747672247577, - "p50": 1.071, - "p95": 1.605, - "p99": 2.171, - "max": 7.664458000013838 - }, - "clientCpuPercent": 98.81976731877916, - "serverCpuPercent": 104.08053355152293, - "serverCpuUsPerRequest": 23.536886413267084, - "serverRssMiB": 121.375, - "serverRetainedHeapMiB": 15.395767211914062, - "idleRssMiB": 84.609375, - "server": { - "type": "stats", - "elapsedMs": 5001.76625, - "cpu": { - "user": 4053562, - "system": 1152303 - }, - "memory": { - "rss": 127270912, - "heapTotal": 40747008, - "heapUsed": 26727312, - "external": 4235260, - "arrayBuffers": 307083 - }, - "retainedMemory": { - "rss": 127270912, - "heapTotal": 39960576, - "heapUsed": 16143632, - "external": 4235260, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124288 - }, - "idleMemory": { - "rss": 88719360, - "heapTotal": 33406976, - "heapUsed": 14160072, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 233329, - "errors": 0, - "elapsedMs": 5000.885291999992, - "rps": 46657.53889081613, - "latencyMs": { - "mean": 1.0713542978840878, - "p50": 0.96, - "p95": 1.876, - "p99": 2.001, - "max": 4.732208000001265 - }, - "clientCpuPercent": 100.21905537440607, - "serverCpuPercent": 104.1535913862574, - "serverCpuUsPerRequest": 22.325746049569492, - "serverRssMiB": 110.59375, - "serverRetainedHeapMiB": 12.043739318847656, - "idleRssMiB": 74.625, - "server": { - "type": "stats", - "elapsedMs": 5001.502042, - "cpu": { - "user": 3947846, - "system": 1261398 - }, - "memory": { - "rss": 115965952, - "heapTotal": 31473664, - "heapUsed": 20067376, - "external": 4228346, - "arrayBuffers": 329952 - }, - "retainedMemory": { - "rss": 115998720, - "heapTotal": 31473664, - "heapUsed": 12628776, - "external": 4228346, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113280 - }, - "idleMemory": { - "rss": 78249984, - "heapTotal": 20725760, - "heapUsed": 10622600, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 212341, - "errors": 0, - "elapsedMs": 5001.120915999985, - "rps": 42458.68147691885, - "latencyMs": { - "mean": 1.1773225195746593, - "p50": 1.123, - "p95": 1.395, - "p99": 2.273, - "max": 5.690958999999566 - }, - "clientCpuPercent": 96.637215559777, - "serverCpuPercent": 104.13850890362114, - "serverCpuUsPerRequest": 24.53000598094574, - "serverRssMiB": 113.90625, - "serverRetainedHeapMiB": 13.794952392578125, - "idleRssMiB": 80.8125, - "server": { - "type": "stats", - "elapsedMs": 5001.728999999999, - "cpu": { - "user": 4073274, - "system": 1135452 - }, - "memory": { - "rss": 119439360, - "heapTotal": 34095104, - "heapUsed": 20335768, - "external": 4297636, - "arrayBuffers": 308538 - }, - "retainedMemory": { - "rss": 119488512, - "heapTotal": 34095104, - "heapUsed": 14465056, - "external": 4297636, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116688 - }, - "idleMemory": { - "rss": 84738048, - "heapTotal": 31735808, - "heapUsed": 12356240, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 2, - "requests": 239527, - "errors": 0, - "elapsedMs": 5000.576208000013, - "rps": 47899.87994119564, - "latencyMs": { - "mean": 1.0436087528879843, - "p50": 0.997, - "p95": 1.381, - "p99": 2.021, - "max": 7.877875000005588 - }, - "clientCpuPercent": 100.48661976115987, - "serverCpuPercent": 101.7318892821421, - "serverCpuUsPerRequest": 21.24099162098636, - "serverRssMiB": 108.703125, - "serverRetainedHeapMiB": 11.782928466796875, - "idleRssMiB": 75.6875, - "server": { - "type": "stats", - "elapsedMs": 5001.176166, - "cpu": { - "user": 3681960, - "system": 1405831 - }, - "memory": { - "rss": 113983488, - "heapTotal": 31473664, - "heapUsed": 18987064, - "external": 4230410, - "arrayBuffers": 332016 - }, - "retainedMemory": { - "rss": 114016256, - "heapTotal": 31473664, - "heapUsed": 12355296, - "external": 4230410, - "arrayBuffers": 277690 - }, - "maxRssKiB": 111344 - }, - "idleMemory": { - "rss": 79364096, - "heapTotal": 20987904, - "heapUsed": 10625328, - "external": 4686097, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 163455, - "errors": 0, - "elapsedMs": 5001.508667000016, - "rps": 32681.139008810893, - "latencyMs": { - "mean": 1.529449889015336, - "p50": 1.476, - "p95": 1.669, - "p99": 2.946, - "max": 7.287959000008414 - }, - "clientCpuPercent": 82.05971984172884, - "serverCpuPercent": 104.31546491376808, - "serverCpuUsPerRequest": 31.923820011623995, - "serverRssMiB": 121.078125, - "serverRetainedHeapMiB": 14.044189453125, - "idleRssMiB": 81.515625, - "server": { - "type": "stats", - "elapsedMs": 5002.2381669999995, - "cpu": { - "user": 4280224, - "system": 937884 - }, - "memory": { - "rss": 126959616, - "heapTotal": 38371328, - "heapUsed": 20212600, - "external": 4237909, - "arrayBuffers": 350026 - }, - "retainedMemory": { - "rss": 126959616, - "heapTotal": 38109184, - "heapUsed": 14726400, - "external": 4237909, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123984 - }, - "idleMemory": { - "rss": 85475328, - "heapTotal": 31555584, - "heapUsed": 12362784, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 157478, - "errors": 0, - "elapsedMs": 5001.583583, - "rps": 31485.62797895764, - "latencyMs": { - "mean": 1.587503660962189, - "p50": 1.528, - "p95": 1.911, - "p99": 3.061, - "max": 6.5002499999827705 - }, - "clientCpuPercent": 79.3990729955577, - "serverCpuPercent": 104.52470771512913, - "serverCpuUsPerRequest": 33.20178691626767, - "serverRssMiB": 221.171875, - "serverRetainedHeapMiB": 15.752395629882812, - "idleRssMiB": 86.078125, - "server": { - "type": "stats", - "elapsedMs": 5002.215375, - "cpu": { - "user": 4309590, - "system": 918961 - }, - "memory": { - "rss": 231915520, - "heapTotal": 158433280, - "heapUsed": 57653592, - "external": 4810549, - "arrayBuffers": 844730 - }, - "retainedMemory": { - "rss": 231948288, - "heapTotal": 157908992, - "heapUsed": 16517584, - "external": 4810549, - "arrayBuffers": 277690 - }, - "maxRssKiB": 226512 - }, - "idleMemory": { - "rss": 90259456, - "heapTotal": 33914880, - "heapUsed": 14023480, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 2, - "requests": 181943, - "errors": 0, - "elapsedMs": 5001.366792000015, - "rps": 36378.65558891395, - "latencyMs": { - "mean": 1.3740176072781058, - "p50": 1.321, - "p95": 1.529, - "p99": 2.657, - "max": 7.320791999984067 - }, - "clientCpuPercent": 88.86392829874227, - "serverCpuPercent": 104.39127521197587, - "serverCpuUsPerRequest": 28.700263269265648, - "serverRssMiB": 119.140625, - "serverRetainedHeapMiB": 13.747276306152344, - "idleRssMiB": 81.59375, - "server": { - "type": "stats", - "elapsedMs": 5002.153666, - "cpu": { - "user": 4251218, - "system": 970594 - }, - "memory": { - "rss": 124928000, - "heapTotal": 39944192, - "heapUsed": 24755288, - "external": 4268373, - "arrayBuffers": 380490 - }, - "retainedMemory": { - "rss": 124960768, - "heapTotal": 37584896, - "heapUsed": 14415064, - "external": 4268373, - "arrayBuffers": 277690 - }, - "maxRssKiB": 122032 - }, - "idleMemory": { - "rss": 85557248, - "heapTotal": 31293440, - "heapUsed": 12362416, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 185643, - "errors": 0, - "elapsedMs": 5001.344417000015, - "rps": 37118.61941940709, - "latencyMs": { - "mean": 1.3466646068582977, - "p50": 1.296, - "p95": 1.538, - "p99": 2.595, - "max": 5.930749999999534 - }, - "clientCpuPercent": 89.47396193690267, - "serverCpuPercent": 104.1394022596692, - "serverCpuUsPerRequest": 28.0593666338079, - "serverRssMiB": 140.453125, - "serverRetainedHeapMiB": 17.292640686035156, - "idleRssMiB": 88.53125, - "server": { - "type": "stats", - "elapsedMs": 5001.973208, - "cpu": { - "user": 4170319, - "system": 1038706 - }, - "memory": { - "rss": 147275776, - "heapTotal": 58834944, - "heapUsed": 36272712, - "external": 4407413, - "arrayBuffers": 418315 - }, - "retainedMemory": { - "rss": 147292160, - "heapTotal": 58310656, - "heapUsed": 18132648, - "external": 4407413, - "arrayBuffers": 362018 - }, - "maxRssKiB": 143840 - }, - "idleMemory": { - "rss": 92831744, - "heapTotal": 35504128, - "heapUsed": 15776184, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 3, - "requests": 221604, - "errors": 0, - "elapsedMs": 5001.096749999997, - "rps": 44311.080364522066, - "latencyMs": { - "mean": 1.128048189581489, - "p50": 1.07, - "p95": 1.527, - "p99": 2.165, - "max": 4.904167000000598 - }, - "clientCpuPercent": 98.88636927489961, - "serverCpuPercent": 104.42904085619476, - "serverCpuUsPerRequest": 23.570156675872276, - "serverRssMiB": 121.1875, - "serverRetainedHeapMiB": 15.401123046875, - "idleRssMiB": 84.671875, - "server": { - "type": "stats", - "elapsedMs": 5001.713084000001, - "cpu": { - "user": 4071849, - "system": 1151392 - }, - "memory": { - "rss": 127074304, - "heapTotal": 40747008, - "heapUsed": 28694736, - "external": 4252124, - "arrayBuffers": 323947 - }, - "retainedMemory": { - "rss": 127090688, - "heapTotal": 39436288, - "heapUsed": 16149248, - "external": 4252124, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124112 - }, - "idleMemory": { - "rss": 88784896, - "heapTotal": 33406976, - "heapUsed": 14158488, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 204816, - "errors": 0, - "elapsedMs": 5001.193333000003, - "rps": 40953.425785109495, - "latencyMs": { - "mean": 1.2205881729406085, - "p50": 1.168, - "p95": 1.403, - "p99": 2.348, - "max": 5.166457999992417 - }, - "clientCpuPercent": 95.03911733699812, - "serverCpuPercent": 104.37622641367807, - "serverCpuUsPerRequest": 25.490323021638936, - "serverRssMiB": 122.5625, - "serverRetainedHeapMiB": 15.633750915527344, - "idleRssMiB": 84.28125, - "server": { - "type": "stats", - "elapsedMs": 5001.930209, - "cpu": { - "user": 4172879, - "system": 1047947 - }, - "memory": { - "rss": 128516096, - "heapTotal": 40747008, - "heapUsed": 25343768, - "external": 4222068, - "arrayBuffers": 293891 - }, - "retainedMemory": { - "rss": 128516096, - "heapTotal": 40222720, - "heapUsed": 16393176, - "external": 4222068, - "arrayBuffers": 277690 - }, - "maxRssKiB": 125504 - }, - "idleMemory": { - "rss": 88375296, - "heapTotal": 33406976, - "heapUsed": 14161336, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 213225, - "errors": 0, - "elapsedMs": 5001.166499999992, - "rps": 42635.05324207869, - "latencyMs": { - "mean": 1.1724259596435287, - "p50": 1.118, - "p95": 1.377, - "p99": 2.263, - "max": 9.430082999984734 - }, - "clientCpuPercent": 96.90755146824262, - "serverCpuPercent": 104.27899111948437, - "serverCpuUsPerRequest": 24.46200492437566, - "serverRssMiB": 113.71875, - "serverRetainedHeapMiB": 13.7459716796875, - "idleRssMiB": 80.953125, - "server": { - "type": "stats", - "elapsedMs": 5001.880958, - "cpu": { - "user": 4108756, - "system": 1107155 - }, - "memory": { - "rss": 119242752, - "heapTotal": 34095104, - "heapUsed": 17829528, - "external": 4280995, - "arrayBuffers": 291897 - }, - "retainedMemory": { - "rss": 119259136, - "heapTotal": 34095104, - "heapUsed": 14413696, - "external": 4280995, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116464 - }, - "idleMemory": { - "rss": 84885504, - "heapTotal": 31211520, - "heapUsed": 12355496, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 3, - "requests": 249861, - "errors": 0, - "elapsedMs": 5000.585290999996, - "rps": 49966.351028888035, - "latencyMs": { - "mean": 1.0004414578665843, - "p50": 0.987, - "p95": 1.46, - "p99": 2.01, - "max": 6.63895799999591 - }, - "clientCpuPercent": 100.4991757473856, - "serverCpuPercent": 102.02682434223233, - "serverCpuUsPerRequest": 20.421474339732892, - "serverRssMiB": 109.484375, - "serverRetainedHeapMiB": 11.780044555664062, - "idleRssMiB": 75.0625, - "server": { - "type": "stats", - "elapsedMs": 5001.165167, - "cpu": { - "user": 3673070, - "system": 1429460 - }, - "memory": { - "rss": 114802688, - "heapTotal": 31473664, - "heapUsed": 19215080, - "external": 4232474, - "arrayBuffers": 334080 - }, - "retainedMemory": { - "rss": 114802688, - "heapTotal": 31473664, - "heapUsed": 12352272, - "external": 4232474, - "arrayBuffers": 277690 - }, - "maxRssKiB": 112112 - }, - "idleMemory": { - "rss": 78708736, - "heapTotal": 21250048, - "heapUsed": 10621648, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 234559, - "errors": 0, - "elapsedMs": 5000.760708000016, - "rps": 46904.66384939434, - "latencyMs": { - "mean": 1.0657330839703474, - "p50": 0.93, - "p95": 1.806, - "p99": 1.965, - "max": 10.864750000007916 - }, - "clientCpuPercent": 100.10914923386059, - "serverCpuPercent": 104.26589041695277, - "serverCpuUsPerRequest": 22.232772991017185, - "serverRssMiB": 111.03125, - "serverRetainedHeapMiB": 11.96624755859375, - "idleRssMiB": 75.265625, - "server": { - "type": "stats", - "elapsedMs": 5001.536916000001, - "cpu": { - "user": 3953086, - "system": 1261811 - }, - "memory": { - "rss": 116424704, - "heapTotal": 31997952, - "heapUsed": 15104840, - "external": 4188098, - "arrayBuffers": 289704 - }, - "retainedMemory": { - "rss": 116490240, - "heapTotal": 31997952, - "heapUsed": 12547520, - "external": 4188098, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113760 - }, - "idleMemory": { - "rss": 78921728, - "heapTotal": 21512192, - "heapUsed": 10622768, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 156918, - "errors": 0, - "elapsedMs": 5001.360333999997, - "rps": 31375.06388676855, - "latencyMs": { - "mean": 1.5931720675831178, - "p50": 1.534, - "p95": 1.92, - "p99": 3.072, - "max": 6.354583000007551 - }, - "clientCpuPercent": 78.81899596798782, - "serverCpuPercent": 104.71408473021594, - "serverCpuUsPerRequest": 33.38095693292038, - "serverRssMiB": 219.578125, - "serverRetainedHeapMiB": 15.59283447265625, - "idleRssMiB": 85.640625, - "server": { - "type": "stats", - "elapsedMs": 5002.262124999999, - "cpu": { - "user": 4315947, - "system": 922126 - }, - "memory": { - "rss": 230244352, - "heapTotal": 158171136, - "heapUsed": 67210736, - "external": 4938373, - "arrayBuffers": 972554 - }, - "retainedMemory": { - "rss": 229998592, - "heapTotal": 157384704, - "heapUsed": 16350272, - "external": 4938373, - "arrayBuffers": 277690 - }, - "maxRssKiB": 224880 - }, - "idleMemory": { - "rss": 89800704, - "heapTotal": 33128448, - "heapUsed": 14018520, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 3, - "requests": 181683, - "errors": 0, - "elapsedMs": 5001.347791999986, - "rps": 36326.807803811396, - "latencyMs": { - "mean": 1.3760031427046198, - "p50": 1.326, - "p95": 1.518, - "p99": 2.654, - "max": 5.012542000011308 - }, - "clientCpuPercent": 89.00430814110463, - "serverCpuPercent": 104.36436526839131, - "serverCpuUsPerRequest": 28.733546892114287, - "serverRssMiB": 119.4375, - "serverRetainedHeapMiB": 13.766426086425781, - "idleRssMiB": 82.03125, - "server": { - "type": "stats", - "elapsedMs": 5002.087625, - "cpu": { - "user": 4233846, - "system": 986551 - }, - "memory": { - "rss": 125239296, - "heapTotal": 39157760, - "heapUsed": 25375392, - "external": 4274085, - "arrayBuffers": 386202 - }, - "retainedMemory": { - "rss": 125239296, - "heapTotal": 38633472, - "heapUsed": 14435144, - "external": 4274085, - "arrayBuffers": 277690 - }, - "maxRssKiB": 122304 - }, - "idleMemory": { - "rss": 86016000, - "heapTotal": 31293440, - "heapUsed": 12363808, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 164945, - "errors": 0, - "elapsedMs": 5001.456000000006, - "rps": 32979.39639976835, - "latencyMs": { - "mean": 1.5156587369486774, - "p50": 1.458, - "p95": 1.684, - "p99": 2.91, - "max": 7.315457999997307 - }, - "clientCpuPercent": 82.53710519496714, - "serverCpuPercent": 104.4580498053539, - "serverCpuUsPerRequest": 31.678177574342964, - "serverRssMiB": 121.421875, - "serverRetainedHeapMiB": 14.041259765625, - "idleRssMiB": 81.515625, - "server": { - "type": "stats", - "elapsedMs": 5002.158292, - "cpu": { - "user": 4300730, - "system": 924427 - }, - "memory": { - "rss": 127320064, - "heapTotal": 39682048, - "heapUsed": 23487224, - "external": 4263613, - "arrayBuffers": 375730 - }, - "retainedMemory": { - "rss": 127352832, - "heapTotal": 38895616, - "heapUsed": 14723328, - "external": 4263613, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124368 - }, - "idleMemory": { - "rss": 85475328, - "heapTotal": 31817728, - "heapUsed": 12362856, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 201728, - "errors": 0, - "elapsedMs": 5001.215957999986, - "rps": 40335.79067452871, - "latencyMs": { - "mean": 1.2392733319666884, - "p50": 1.193, - "p95": 1.415, - "p99": 2.39, - "max": 16.10379100003047 - }, - "clientCpuPercent": 93.90600284891782, - "serverCpuPercent": 105.29293269081728, - "serverCpuUsPerRequest": 26.10801177823604, - "serverRssMiB": 119, - "serverRetainedHeapMiB": 15.577873229980469, - "idleRssMiB": 86.890625, - "server": { - "type": "stats", - "elapsedMs": 5001.966291000001, - "cpu": { - "user": 4211611, - "system": 1055106 - }, - "memory": { - "rss": 124780544, - "heapTotal": 36536320, - "heapUsed": 23569408, - "external": 4278070, - "arrayBuffers": 312251 - }, - "retainedMemory": { - "rss": 124780544, - "heapTotal": 36012032, - "heapUsed": 16334584, - "external": 4278070, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121856 - }, - "idleMemory": { - "rss": 91111424, - "heapTotal": 33390592, - "heapUsed": 13959944, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 3, - "requests": 224250, - "errors": 0, - "elapsedMs": 5001.127124999999, - "rps": 44839.891967353265, - "latencyMs": { - "mean": 1.1147521697392144, - "p50": 1.058, - "p95": 1.635, - "p99": 2.144, - "max": 7.061083000036888 - }, - "clientCpuPercent": 99.09336187889846, - "serverCpuPercent": 104.99774603426738, - "serverCpuUsPerRequest": 23.41901449275362, - "serverRssMiB": 113.328125, - "serverRetainedHeapMiB": 13.803398132324219, - "idleRssMiB": 81.828125, - "server": { - "type": "stats", - "elapsedMs": 5001.73975, - "cpu": { - "user": 4067862, - "system": 1183852 - }, - "memory": { - "rss": 118833152, - "heapTotal": 33914880, - "heapUsed": 21611032, - "external": 4225717, - "arrayBuffers": 320819 - }, - "retainedMemory": { - "rss": 118849536, - "heapTotal": 33914880, - "heapUsed": 14473912, - "external": 4225717, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116064 - }, - "idleMemory": { - "rss": 85803008, - "heapTotal": 31555584, - "heapUsed": 12357216, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 203575, - "errors": 0, - "elapsedMs": 5001.2432499999995, - "rps": 40704.878731903314, - "latencyMs": { - "mean": 1.2280134095639401, - "p50": 1.175, - "p95": 1.467, - "p99": 2.364, - "max": 7.310416999971494 - }, - "clientCpuPercent": 94.40864529034856, - "serverCpuPercent": 104.85275840867432, - "serverCpuUsPerRequest": 25.763006263048016, - "serverRssMiB": 114.671875, - "serverRetainedHeapMiB": 14.005294799804688, - "idleRssMiB": 81.921875, - "server": { - "type": "stats", - "elapsedMs": 5001.970458, - "cpu": { - "user": 4181441, - "system": 1063263 - }, - "memory": { - "rss": 120242176, - "heapTotal": 34701312, - "heapUsed": 15888784, - "external": 4182605, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 120274944, - "heapTotal": 34177024, - "heapUsed": 14685616, - "external": 4182605, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117456 - }, - "idleMemory": { - "rss": 85901312, - "heapTotal": 31555584, - "heapUsed": 12357656, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 4, - "requests": 238723, - "errors": 0, - "elapsedMs": 5000.591709, - "rps": 47738.950486669295, - "latencyMs": { - "mean": 1.0471543680038753, - "p50": 1, - "p95": 1.325, - "p99": 2.025, - "max": 7.572625000029802 - }, - "clientCpuPercent": 100.40013846689358, - "serverCpuPercent": 101.90131730824824, - "serverCpuUsPerRequest": 21.34888971737118, - "serverRssMiB": 109.84375, - "serverRetainedHeapMiB": 11.6885986328125, - "idleRssMiB": 74.703125, - "server": { - "type": "stats", - "elapsedMs": 5001.378917, - "cpu": { - "user": 3690715, - "system": 1405756 - }, - "memory": { - "rss": 115179520, - "heapTotal": 31735808, - "heapUsed": 14928784, - "external": 4190678, - "arrayBuffers": 292284 - }, - "retainedMemory": { - "rss": 115212288, - "heapTotal": 31735808, - "heapUsed": 12256384, - "external": 4190678, - "arrayBuffers": 277690 - }, - "maxRssKiB": 112512 - }, - "idleMemory": { - "rss": 78331904, - "heapTotal": 20987904, - "heapUsed": 10622672, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 4, - "requests": 234246, - "errors": 0, - "elapsedMs": 5000.950542000006, - "rps": 46840.29526641132, - "latencyMs": { - "mean": 1.0671523947944008, - "p50": 0.941, - "p95": 1.835, - "p99": 1.982, - "max": 5.969083000032697 - }, - "clientCpuPercent": 100.11570716309623, - "serverCpuPercent": 103.9872045931359, - "serverCpuUsPerRequest": 22.203555236802337, - "serverRssMiB": 111.3125, - "serverRetainedHeapMiB": 11.960350036621094, - "idleRssMiB": 74.8125, - "server": { - "type": "stats", - "elapsedMs": 5001.667292, - "cpu": { - "user": 3931117, - "system": 1269977 - }, - "memory": { - "rss": 116719616, - "heapTotal": 31473664, - "heapUsed": 14629248, - "external": 4185518, - "arrayBuffers": 287124 - }, - "retainedMemory": { - "rss": 116736000, - "heapTotal": 31473664, - "heapUsed": 12541336, - "external": 4185518, - "arrayBuffers": 277690 - }, - "maxRssKiB": 114000 - }, - "idleMemory": { - "rss": 78446592, - "heapTotal": 20725760, - "heapUsed": 10622712, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 4, - "requests": 213432, - "errors": 0, - "elapsedMs": 5001.153541000036, - "rps": 42676.55416900516, - "latencyMs": { - "mean": 1.1713091512472822, - "p50": 1.117, - "p95": 1.353, - "p99": 2.255, - "max": 9.122167000023182 - }, - "clientCpuPercent": 96.91068191101483, - "serverCpuPercent": 104.13691722911719, - "serverCpuUsPerRequest": 24.404639416769744, - "serverRssMiB": 113.9375, - "serverRetainedHeapMiB": 13.728591918945312, - "idleRssMiB": 80.984375, - "server": { - "type": "stats", - "elapsedMs": 5001.81025, - "cpu": { - "user": 4094209, - "system": 1114522 - }, - "memory": { - "rss": 119472128, - "heapTotal": 34619392, - "heapUsed": 17901824, - "external": 4282285, - "arrayBuffers": 293187 - }, - "retainedMemory": { - "rss": 119504896, - "heapTotal": 33832960, - "heapUsed": 14395472, - "external": 4282285, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116704 - }, - "idleMemory": { - "rss": 84918272, - "heapTotal": 30949376, - "heapUsed": 12356920, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 4, - "requests": 180698, - "errors": 0, - "elapsedMs": 5001.383000000031, - "rps": 36129.60655082782, - "latencyMs": { - "mean": 1.3834891061328367, - "p50": 1.332, - "p95": 1.519, - "p99": 2.671, - "max": 6.380792000039946 - }, - "clientCpuPercent": 88.66557510192627, - "serverCpuPercent": 104.30399139653598, - "serverCpuUsPerRequest": 28.872915029496728, - "serverRssMiB": 119.84375, - "serverRetainedHeapMiB": 13.8267822265625, - "idleRssMiB": 81.796875, - "server": { - "type": "stats", - "elapsedMs": 5001.992666, - "cpu": { - "user": 4241453, - "system": 975825 - }, - "memory": { - "rss": 125665280, - "heapTotal": 39419904, - "heapUsed": 24554720, - "external": 4267149, - "arrayBuffers": 379266 - }, - "retainedMemory": { - "rss": 125698048, - "heapTotal": 38633472, - "heapUsed": 14498432, - "external": 4267149, - "arrayBuffers": 277690 - }, - "maxRssKiB": 122752 - }, - "idleMemory": { - "rss": 85770240, - "heapTotal": 31293440, - "heapUsed": 12363952, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 4, - "requests": 165124, - "errors": 0, - "elapsedMs": 5001.455249999999, - "rps": 33015.19092868021, - "latencyMs": { - "mean": 1.514042426673299, - "p50": 1.458, - "p95": 1.684, - "p99": 2.908, - "max": 5.521416000032332 - }, - "clientCpuPercent": 82.78282605847569, - "serverCpuPercent": 104.38606342183371, - "serverCpuUsPerRequest": 31.622096121702477, - "serverRssMiB": 121.046875, - "serverRetainedHeapMiB": 14.032363891601562, - "idleRssMiB": 81.921875, - "server": { - "type": "stats", - "elapsedMs": 5002.168708, - "cpu": { - "user": 4296683, - "system": 924884 - }, - "memory": { - "rss": 126926848, - "heapTotal": 39682048, - "heapUsed": 25011568, - "external": 4342477, - "arrayBuffers": 454594 - }, - "retainedMemory": { - "rss": 126943232, - "heapTotal": 38109184, - "heapUsed": 14714000, - "external": 4342477, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123968 - }, - "idleMemory": { - "rss": 85901312, - "heapTotal": 31555584, - "heapUsed": 12365024, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 4, - "requests": 156242, - "errors": 0, - "elapsedMs": 5001.550833000045, - "rps": 31238.710795283965, - "latencyMs": { - "mean": 1.6001213319337764, - "p50": 1.547, - "p95": 1.913, - "p99": 3.093, - "max": 6.159209000004921 - }, - "clientCpuPercent": 78.28369901124155, - "serverCpuPercent": 104.45926680194664, - "serverCpuUsPerRequest": 33.44280667170159, - "serverRssMiB": 220.859375, - "serverRetainedHeapMiB": 15.738319396972656, - "idleRssMiB": 85.671875, - "server": { - "type": "stats", - "elapsedMs": 5002.1134170000005, - "cpu": { - "user": 4308529, - "system": 916642 - }, - "memory": { - "rss": 231587840, - "heapTotal": 158695424, - "heapUsed": 32197680, - "external": 4448837, - "arrayBuffers": 483018 - }, - "retainedMemory": { - "rss": 231325696, - "heapTotal": 156598272, - "heapUsed": 16502824, - "external": 4448837, - "arrayBuffers": 277690 - }, - "maxRssKiB": 226176 - }, - "idleMemory": { - "rss": 89833472, - "heapTotal": 33390592, - "heapUsed": 14023816, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 4, - "requests": 223685, - "errors": 0, - "elapsedMs": 5001.040000000037, - "rps": 44727.696639098736, - "latencyMs": { - "mean": 1.1175873198158148, - "p50": 1.061, - "p95": 1.618, - "p99": 2.152, - "max": 5.2594999999855645 - }, - "clientCpuPercent": 99.01518484155221, - "serverCpuPercent": 104.91761894631342, - "serverCpuUsPerRequest": 23.46090260857903, - "serverRssMiB": 113, - "serverRetainedHeapMiB": 13.712615966796875, - "idleRssMiB": 81.203125, - "server": { - "type": "stats", - "elapsedMs": 5001.878666999999, - "cpu": { - "user": 4072446, - "system": 1175406 - }, - "memory": { - "rss": 118489088, - "heapTotal": 33914880, - "heapUsed": 21553176, - "external": 4225445, - "arrayBuffers": 320547 - }, - "retainedMemory": { - "rss": 118521856, - "heapTotal": 33914880, - "heapUsed": 14378720, - "external": 4225445, - "arrayBuffers": 277690 - }, - "maxRssKiB": 115744 - }, - "idleMemory": { - "rss": 85147648, - "heapTotal": 31555584, - "heapUsed": 12357472, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 4, - "requests": 205046, - "errors": 0, - "elapsedMs": 5001.278500000015, - "rps": 40998.71662815806, - "latencyMs": { - "mean": 1.2192358825775376, - "p50": 1.167, - "p95": 1.406, - "p99": 2.352, - "max": 5.99937500001397 - }, - "clientCpuPercent": 95.0370990137819, - "serverCpuPercent": 104.99375879799064, - "serverCpuUsPerRequest": 25.6124284306936, - "serverRssMiB": 115.28125, - "serverRetainedHeapMiB": 14.005577087402344, - "idleRssMiB": 82.078125, - "server": { - "type": "stats", - "elapsedMs": 5001.941125, - "cpu": { - "user": 4186956, - "system": 1064770 - }, - "memory": { - "rss": 120881152, - "heapTotal": 34701312, - "heapUsed": 16466248, - "external": 4186277, - "arrayBuffers": 281379 - }, - "retainedMemory": { - "rss": 120881152, - "heapTotal": 34701312, - "heapUsed": 14685912, - "external": 4186277, - "arrayBuffers": 277690 - }, - "maxRssKiB": 118048 - }, - "idleMemory": { - "rss": 86065152, - "heapTotal": 31817728, - "heapUsed": 12357904, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 4, - "requests": 199880, - "errors": 0, - "elapsedMs": 5001.194875000045, - "rps": 39966.4490178456, - "latencyMs": { - "mean": 1.2507038230186964, - "p50": 1.204, - "p95": 1.419, - "p99": 2.411, - "max": 5.703207999991719 - }, - "clientCpuPercent": 93.42223442152827, - "serverCpuPercent": 104.7449181297978, - "serverCpuUsPerRequest": 26.212287372423454, - "serverRssMiB": 118.75, - "serverRetainedHeapMiB": 15.557510375976562, - "idleRssMiB": 86.984375, - "server": { - "type": "stats", - "elapsedMs": 5001.9725, - "cpu": { - "user": 4190440, - "system": 1048872 - }, - "memory": { - "rss": 124518400, - "heapTotal": 36536320, - "heapUsed": 20143872, - "external": 4257806, - "arrayBuffers": 291987 - }, - "retainedMemory": { - "rss": 124551168, - "heapTotal": 36012032, - "heapUsed": 16313232, - "external": 4257806, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121632 - }, - "idleMemory": { - "rss": 91209728, - "heapTotal": 32866304, - "heapUsed": 13956824, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 4, - "requests": 222252, - "errors": 0, - "elapsedMs": 5001.087791999977, - "rps": 44440.73154555033, - "latencyMs": { - "mean": 1.12479285651874, - "p50": 1.067, - "p95": 1.632, - "p99": 2.168, - "max": 5.434166999999434 - }, - "clientCpuPercent": 98.99744227485505, - "serverCpuPercent": 104.43416563653525, - "serverCpuUsPerRequest": 23.502470168997355, - "serverRssMiB": 121.28125, - "serverRetainedHeapMiB": 15.400779724121094, - "idleRssMiB": 84.421875, - "server": { - "type": "stats", - "elapsedMs": 5001.687875, - "cpu": { - "user": 4085046, - "system": 1138425 - }, - "memory": { - "rss": 127172608, - "heapTotal": 41009152, - "heapUsed": 29186880, - "external": 4255796, - "arrayBuffers": 327619 - }, - "retainedMemory": { - "rss": 127188992, - "heapTotal": 39174144, - "heapUsed": 16148888, - "external": 4255796, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124208 - }, - "idleMemory": { - "rss": 88522752, - "heapTotal": 33406976, - "heapUsed": 14159264, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 4, - "requests": 203001, - "errors": 0, - "elapsedMs": 5001.285709000018, - "rps": 40589.76267536394, - "latencyMs": { - "mean": 1.2315034983325124, - "p50": 1.177, - "p95": 1.413, - "p99": 2.37, - "max": 6.033875000022817 - }, - "clientCpuPercent": 94.66575747672373, - "serverCpuPercent": 104.52878643897917, - "serverCpuUsPerRequest": 25.755602189151777, - "serverRssMiB": 122.34375, - "serverRetainedHeapMiB": 15.676719665527344, - "idleRssMiB": 84.53125, - "server": { - "type": "stats", - "elapsedMs": 5001.888167, - "cpu": { - "user": 4190419, - "system": 1037994 - }, - "memory": { - "rss": 128286720, - "heapTotal": 41009152, - "heapUsed": 27993920, - "external": 4241108, - "arrayBuffers": 312931 - }, - "retainedMemory": { - "rss": 128286720, - "heapTotal": 40484864, - "heapUsed": 16438232, - "external": 4241108, - "arrayBuffers": 277690 - }, - "maxRssKiB": 125280 - }, - "idleMemory": { - "rss": 88637440, - "heapTotal": 33931264, - "heapUsed": 14158864, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 4, - "requests": 185915, - "errors": 0, - "elapsedMs": 5001.439292000025, - "rps": 37172.29964130075, - "latencyMs": { - "mean": 1.344730671409029, - "p50": 1.294, - "p95": 1.527, - "p99": 2.59, - "max": 6.132917000039015 - }, - "clientCpuPercent": 89.60246717716188, - "serverCpuPercent": 104.25551114416304, - "serverCpuUsPerRequest": 28.050060511524084, - "serverRssMiB": 140.265625, - "serverRetainedHeapMiB": 17.307044982910156, - "idleRssMiB": 88.28125, - "server": { - "type": "stats", - "elapsedMs": 5002.063625, - "cpu": { - "user": 4170832, - "system": 1044095 - }, - "memory": { - "rss": 147079168, - "heapTotal": 58834944, - "heapUsed": 25494224, - "external": 4339141, - "arrayBuffers": 350043 - }, - "retainedMemory": { - "rss": 147095552, - "heapTotal": 58048512, - "heapUsed": 18147752, - "external": 4339141, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143648 - }, - "idleMemory": { - "rss": 92569600, - "heapTotal": 35241984, - "heapUsed": 15776056, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 5, - "requests": 164288, - "errors": 0, - "elapsedMs": 5001.490457999986, - "rps": 32847.80834425426, - "latencyMs": { - "mean": 1.52171935286812, - "p50": 1.465, - "p95": 1.679, - "p99": 2.923, - "max": 6.8828750000102445 - }, - "clientCpuPercent": 82.51618261909742, - "serverCpuPercent": 104.49332763618415, - "serverCpuUsPerRequest": 31.81635907674328, - "serverRssMiB": 121.078125, - "serverRetainedHeapMiB": 14.076148986816406, - "idleRssMiB": 82.015625, - "server": { - "type": "stats", - "elapsedMs": 5002.277292000001, - "cpu": { - "user": 4298720, - "system": 928326 - }, - "memory": { - "rss": 126959616, - "heapTotal": 39157760, - "heapUsed": 20767088, - "external": 4310109, - "arrayBuffers": 422226 - }, - "retainedMemory": { - "rss": 126615552, - "heapTotal": 37847040, - "heapUsed": 14759912, - "external": 4310109, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124000 - }, - "idleMemory": { - "rss": 85999616, - "heapTotal": 31293440, - "heapUsed": 12363912, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 5, - "requests": 157943, - "errors": 0, - "elapsedMs": 5001.527082999994, - "rps": 31578.95526285211, - "latencyMs": { - "mean": 1.5828842673433217, - "p50": 1.531, - "p95": 1.897, - "p99": 3.074, - "max": 6.196374999999534 - }, - "clientCpuPercent": 79.03110258935301, - "serverCpuPercent": 104.38032687878683, - "serverCpuUsPerRequest": 33.057894303641184, - "serverRssMiB": 220.84375, - "serverRetainedHeapMiB": 15.747245788574219, - "idleRssMiB": 85.734375, - "server": { - "type": "stats", - "elapsedMs": 5002.152375000001, - "cpu": { - "user": 4320620, - "system": 900643 - }, - "memory": { - "rss": 231571456, - "heapTotal": 157908992, - "heapUsed": 66480296, - "external": 4930349, - "arrayBuffers": 964530 - }, - "retainedMemory": { - "rss": 231604224, - "heapTotal": 157122560, - "heapUsed": 16512184, - "external": 4930349, - "arrayBuffers": 277690 - }, - "maxRssKiB": 226176 - }, - "idleMemory": { - "rss": 89899008, - "heapTotal": 33652736, - "heapUsed": 14018528, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 5, - "requests": 180637, - "errors": 0, - "elapsedMs": 5001.347541999945, - "rps": 36117.665985628875, - "latencyMs": { - "mean": 1.3839768064293902, - "p50": 1.333, - "p95": 1.527, - "p99": 2.67, - "max": 6.677124999987427 - }, - "clientCpuPercent": 88.60194103263638, - "serverCpuPercent": 104.41354530926012, - "serverCpuUsPerRequest": 28.91368324318938, - "serverRssMiB": 119.390625, - "serverRetainedHeapMiB": 13.757972717285156, - "idleRssMiB": 82.03125, - "server": { - "type": "stats", - "elapsedMs": 5002.110583, - "cpu": { - "user": 4230519, - "system": 992362 - }, - "memory": { - "rss": 125190144, - "heapTotal": 40206336, - "heapUsed": 23835656, - "external": 4263341, - "arrayBuffers": 375458 - }, - "retainedMemory": { - "rss": 124780544, - "heapTotal": 37060608, - "heapUsed": 14426280, - "external": 4263341, - "arrayBuffers": 277690 - }, - "maxRssKiB": 122368 - }, - "idleMemory": { - "rss": 86016000, - "heapTotal": 31555584, - "heapUsed": 12363880, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 5, - "requests": 205018, - "errors": 0, - "elapsedMs": 5001.199999999953, - "rps": 40993.761497241045, - "latencyMs": { - "mean": 1.219384891819241, - "p50": 1.167, - "p95": 1.411, - "p99": 2.344, - "max": 16.569666999974288 - }, - "clientCpuPercent": 94.99658082060394, - "serverCpuPercent": 104.9485940495405, - "serverCpuUsPerRequest": 25.604707879308158, - "serverRssMiB": 115.140625, - "serverRetainedHeapMiB": 14.029090881347656, - "idleRssMiB": 81.734375, - "server": { - "type": "stats", - "elapsedMs": 5001.902167, - "cpu": { - "user": 4184612, - "system": 1064814 - }, - "memory": { - "rss": 120733696, - "heapTotal": 34439168, - "heapUsed": 15912416, - "external": 4182605, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 120733696, - "heapTotal": 34439168, - "heapUsed": 14710568, - "external": 4182605, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117904 - }, - "idleMemory": { - "rss": 85704704, - "heapTotal": 31555584, - "heapUsed": 12360056, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 5, - "requests": 202026, - "errors": 0, - "elapsedMs": 5001.291666999983, - "rps": 40394.76468309735, - "latencyMs": { - "mean": 1.2374585565569687, - "p50": 1.192, - "p95": 1.4, - "p99": 2.386, - "max": 6.765291999967303 - }, - "clientCpuPercent": 93.99035915095364, - "serverCpuPercent": 105.00725251993956, - "serverCpuUsPerRequest": 25.999227822161505, - "serverRssMiB": 118.984375, - "serverRetainedHeapMiB": 15.548805236816406, - "idleRssMiB": 86.4375, - "server": { - "type": "stats", - "elapsedMs": 5002.0545, - "cpu": { - "user": 4197966, - "system": 1054554 - }, - "memory": { - "rss": 124764160, - "heapTotal": 36274176, - "heapUsed": 18494088, - "external": 4248286, - "arrayBuffers": 282467 - }, - "retainedMemory": { - "rss": 124862464, - "heapTotal": 36012032, - "heapUsed": 16304104, - "external": 4248286, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121936 - }, - "idleMemory": { - "rss": 90636288, - "heapTotal": 33128448, - "heapUsed": 13959424, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 5, - "requests": 222666, - "errors": 0, - "elapsedMs": 5001.107833000016, - "rps": 44523.33511601754, - "latencyMs": { - "mean": 1.1226771548552918, - "p50": 1.067, - "p95": 1.589, - "p99": 2.16, - "max": 5.487250000005588 - }, - "clientCpuPercent": 99.10362194743709, - "serverCpuPercent": 105.19410759861194, - "serverCpuUsPerRequest": 23.63010068892422, - "serverRssMiB": 113.578125, - "serverRetainedHeapMiB": 13.7470703125, - "idleRssMiB": 81.78125, - "server": { - "type": "stats", - "elapsedMs": 5001.820083, - "cpu": { - "user": 4057529, - "system": 1204091 - }, - "memory": { - "rss": 119095296, - "heapTotal": 33914880, - "heapUsed": 20145248, - "external": 4215245, - "arrayBuffers": 310347 - }, - "retainedMemory": { - "rss": 119128064, - "heapTotal": 33914880, - "heapUsed": 14414848, - "external": 4215245, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116336 - }, - "idleMemory": { - "rss": 85753856, - "heapTotal": 31555584, - "heapUsed": 12358112, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 5, - "requests": 202789, - "errors": 0, - "elapsedMs": 5001.250124999962, - "rps": 40547.662070791055, - "latencyMs": { - "mean": 1.2327967333780432, - "p50": 1.179, - "p95": 1.401, - "p99": 2.369, - "max": 6.622583000047598 - }, - "clientCpuPercent": 94.64601612981785, - "serverCpuPercent": 104.38856967605967, - "serverCpuUsPerRequest": 25.747491234731665, - "serverRssMiB": 122.53125, - "serverRetainedHeapMiB": 15.663139343261719, - "idleRssMiB": 84.375, - "server": { - "type": "stats", - "elapsedMs": 5001.800499999999, - "cpu": { - "user": 4183331, - "system": 1037977 - }, - "memory": { - "rss": 128483328, - "heapTotal": 40747008, - "heapUsed": 25252672, - "external": 4221388, - "arrayBuffers": 293211 - }, - "retainedMemory": { - "rss": 128483328, - "heapTotal": 39960576, - "heapUsed": 16423992, - "external": 4221388, - "arrayBuffers": 277690 - }, - "maxRssKiB": 125472 - }, - "idleMemory": { - "rss": 88473600, - "heapTotal": 33406976, - "heapUsed": 14159144, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 5, - "requests": 186943, - "errors": 0, - "elapsedMs": 5001.304875000031, - "rps": 37378.845055911304, - "latencyMs": { - "mean": 1.3373034068191643, - "p50": 1.288, - "p95": 1.504, - "p99": 2.578, - "max": 6.037458000006154 - }, - "clientCpuPercent": 89.8054030349424, - "serverCpuPercent": 104.24404242921248, - "serverCpuUsPerRequest": 27.892170340692083, - "serverRssMiB": 140.21875, - "serverRetainedHeapMiB": 17.30425262451172, - "idleRssMiB": 88.484375, - "server": { - "type": "stats", - "elapsedMs": 5001.960667, - "cpu": { - "user": 4170609, - "system": 1043637 - }, - "memory": { - "rss": 147030016, - "heapTotal": 58834944, - "heapUsed": 34977952, - "external": 4398709, - "arrayBuffers": 409611 - }, - "retainedMemory": { - "rss": 147030016, - "heapTotal": 58048512, - "heapUsed": 18144824, - "external": 4398709, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143584 - }, - "idleMemory": { - "rss": 92782592, - "heapTotal": 35241984, - "heapUsed": 15776304, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 5, - "requests": 225362, - "errors": 0, - "elapsedMs": 5001.131083999993, - "rps": 45062.20617191891, - "latencyMs": { - "mean": 1.1092835537934171, - "p50": 1.059, - "p95": 1.659, - "p99": 2.156, - "max": 5.405749999976251 - }, - "clientCpuPercent": 98.91412396340233, - "serverCpuPercent": 104.22449840658737, - "serverCpuUsPerRequest": 23.13213851492266, - "serverRssMiB": 121.734375, - "serverRetainedHeapMiB": 15.391036987304688, - "idleRssMiB": 84.75, - "server": { - "type": "stats", - "elapsedMs": 5001.803875, - "cpu": { - "user": 4075741, - "system": 1137364 - }, - "memory": { - "rss": 127647744, - "heapTotal": 40747008, - "heapUsed": 26523592, - "external": 4232132, - "arrayBuffers": 303955 - }, - "retainedMemory": { - "rss": 127647744, - "heapTotal": 39174144, - "heapUsed": 16138672, - "external": 4232132, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124656 - }, - "idleMemory": { - "rss": 88866816, - "heapTotal": 33669120, - "heapUsed": 14159056, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 5, - "requests": 234871, - "errors": 0, - "elapsedMs": 5000.9130000000005, - "rps": 46965.624077043525, - "latencyMs": { - "mean": 1.0643523740946912, - "p50": 0.938, - "p95": 1.83, - "p99": 1.959, - "max": 5.441708999976981 - }, - "clientCpuPercent": 100.18786569572396, - "serverCpuPercent": 103.96180971241894, - "serverCpuUsPerRequest": 22.13812262901763, - "serverRssMiB": 111.109375, - "serverRetainedHeapMiB": 12.053703308105469, - "idleRssMiB": 75.6875, - "server": { - "type": "stats", - "elapsedMs": 5001.454874999999, - "cpu": { - "user": 3923966, - "system": 1275637 - }, - "memory": { - "rss": 116506624, - "heapTotal": 31473664, - "heapUsed": 15747792, - "external": 4194290, - "arrayBuffers": 295896 - }, - "retainedMemory": { - "rss": 116555776, - "heapTotal": 31473664, - "heapUsed": 12639224, - "external": 4194290, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113824 - }, - "idleMemory": { - "rss": 79364096, - "heapTotal": 21512192, - "heapUsed": 10625224, - "external": 4686097, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 5, - "requests": 214954, - "errors": 0, - "elapsedMs": 5001.169750000001, - "rps": 42980.744654788, - "latencyMs": { - "mean": 1.1630080277827133, - "p50": 1.118, - "p95": 1.361, - "p99": 2.268, - "max": 6.121125000005122 - }, - "clientCpuPercent": 96.62591436733375, - "serverCpuPercent": 104.08005728838911, - "serverCpuUsPerRequest": 24.218246694641643, - "serverRssMiB": 114.09375, - "serverRetainedHeapMiB": 13.787818908691406, - "idleRssMiB": 80.75, - "server": { - "type": "stats", - "elapsedMs": 5001.735333, - "cpu": { - "user": 4075972, - "system": 1129837 - }, - "memory": { - "rss": 119635968, - "heapTotal": 33832960, - "heapUsed": 19381968, - "external": 4291573, - "arrayBuffers": 302475 - }, - "retainedMemory": { - "rss": 119668736, - "heapTotal": 33832960, - "heapUsed": 14457576, - "external": 4291573, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116864 - }, - "idleMemory": { - "rss": 84672512, - "heapTotal": 31473664, - "heapUsed": 12355264, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 5, - "requests": 238747, - "errors": 0, - "elapsedMs": 5000.580749999965, - "rps": 47743.85455129421, - "latencyMs": { - "mean": 1.047022013642081, - "p50": 1, - "p95": 1.486, - "p99": 2.025, - "max": 7.06212499999674 - }, - "clientCpuPercent": 100.54282195123108, - "serverCpuPercent": 102.10886931788403, - "serverCpuUsPerRequest": 21.39008657700411, - "serverRssMiB": 109.15625, - "serverRetainedHeapMiB": 11.69696044921875, - "idleRssMiB": 75.015625, - "server": { - "type": "stats", - "elapsedMs": 5001.347125, - "cpu": { - "user": 3710878, - "system": 1395941 - }, - "memory": { - "rss": 114458624, - "heapTotal": 31473664, - "heapUsed": 15038376, - "external": 4191452, - "arrayBuffers": 293058 - }, - "retainedMemory": { - "rss": 114475008, - "heapTotal": 31473664, - "heapUsed": 12265152, - "external": 4191452, - "arrayBuffers": 277690 - }, - "maxRssKiB": 111792 - }, - "idleMemory": { - "rss": 78659584, - "heapTotal": 20987904, - "heapUsed": 10624192, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 6, - "requests": 201865, - "errors": 0, - "elapsedMs": 5001.263416000002, - "rps": 40362.80099828278, - "latencyMs": { - "mean": 1.2384041003145219, - "p50": 1.189, - "p95": 1.42, - "p99": 2.383, - "max": 17.063709000009112 - }, - "clientCpuPercent": 93.98545145537278, - "serverCpuPercent": 105.07909356646249, - "serverCpuUsPerRequest": 26.037574616699278, - "serverRssMiB": 118.515625, - "serverRetainedHeapMiB": 15.575546264648438, - "idleRssMiB": 86.109375, - "server": { - "type": "stats", - "elapsedMs": 5002.017834, - "cpu": { - "user": 4208974, - "system": 1047101 - }, - "memory": { - "rss": 124272640, - "heapTotal": 36536320, - "heapUsed": 17777192, - "external": 4243934, - "arrayBuffers": 278115 - }, - "retainedMemory": { - "rss": 124289024, - "heapTotal": 36012032, - "heapUsed": 16332144, - "external": 4243934, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121376 - }, - "idleMemory": { - "rss": 90292224, - "heapTotal": 33390592, - "heapUsed": 13957344, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 6, - "requests": 222902, - "errors": 0, - "elapsedMs": 5001.116582999995, - "rps": 44570.44667938712, - "latencyMs": { - "mean": 1.1215244072642898, - "p50": 1.064, - "p95": 1.598, - "p99": 2.153, - "max": 7.63795800000662 - }, - "clientCpuPercent": 98.98755443590115, - "serverCpuPercent": 105.06605977902554, - "serverCpuUsPerRequest": 23.576594198347255, - "serverRssMiB": 113.078125, - "serverRetainedHeapMiB": 13.730110168457031, - "idleRssMiB": 82.15625, - "server": { - "type": "stats", - "elapsedMs": 5001.872166, - "cpu": { - "user": 4066159, - "system": 1189111 - }, - "memory": { - "rss": 118571008, - "heapTotal": 33914880, - "heapUsed": 19131272, - "external": 4207629, - "arrayBuffers": 302731 - }, - "retainedMemory": { - "rss": 118571008, - "heapTotal": 33914880, - "heapUsed": 14397064, - "external": 4207629, - "arrayBuffers": 277690 - }, - "maxRssKiB": 115792 - }, - "idleMemory": { - "rss": 86147072, - "heapTotal": 31817728, - "heapUsed": 12358080, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 6, - "requests": 203747, - "errors": 0, - "elapsedMs": 5001.187915999966, - "rps": 40739.7209267354, - "latencyMs": { - "mean": 1.2269655013129002, - "p50": 1.173, - "p95": 1.468, - "p99": 2.362, - "max": 6.767540999979246 - }, - "clientCpuPercent": 94.20397871728426, - "serverCpuPercent": 104.95196501256004, - "serverCpuUsPerRequest": 25.766185514387942, - "serverRssMiB": 115.1875, - "serverRetainedHeapMiB": 13.892784118652344, - "idleRssMiB": 82.140625, - "server": { - "type": "stats", - "elapsedMs": 5002.081666, - "cpu": { - "user": 4192019, - "system": 1057764 - }, - "memory": { - "rss": 120782848, - "heapTotal": 34701312, - "heapUsed": 18813520, - "external": 4200693, - "arrayBuffers": 295795 - }, - "retainedMemory": { - "rss": 120864768, - "heapTotal": 34439168, - "heapUsed": 14567640, - "external": 4200693, - "arrayBuffers": 277690 - }, - "maxRssKiB": 118032 - }, - "idleMemory": { - "rss": 86130688, - "heapTotal": 31555584, - "heapUsed": 12358568, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 6, - "requests": 184748, - "errors": 0, - "elapsedMs": 5001.322624999972, - "rps": 36939.8284918684, - "latencyMs": { - "mean": 1.3531390075345773, - "p50": 1.305, - "p95": 1.51, - "p99": 2.612, - "max": 7.054000000003725 - }, - "clientCpuPercent": 89.3228918620307, - "serverCpuPercent": 104.37482446337177, - "serverCpuUsPerRequest": 28.259596856258256, - "serverRssMiB": 140.140625, - "serverRetainedHeapMiB": 17.24596405029297, - "idleRssMiB": 88.234375, - "server": { - "type": "stats", - "elapsedMs": 5002.072125000001, - "cpu": { - "user": 4194794, - "system": 1026110 - }, - "memory": { - "rss": 146948096, - "heapTotal": 59359232, - "heapUsed": 29880776, - "external": 4366341, - "arrayBuffers": 377243 - }, - "retainedMemory": { - "rss": 147013632, - "heapTotal": 58310656, - "heapUsed": 18083704, - "external": 4366341, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143568 - }, - "idleMemory": { - "rss": 92520448, - "heapTotal": 34979840, - "heapUsed": 15775328, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 6, - "requests": 220420, - "errors": 0, - "elapsedMs": 5001.119209000026, - "rps": 44074.134366429746, - "latencyMs": { - "mean": 1.1341251495192604, - "p50": 1.081, - "p95": 1.291, - "p99": 2.187, - "max": 5.116250000020955 - }, - "clientCpuPercent": 98.57933382447342, - "serverCpuPercent": 104.40572682449742, - "serverCpuUsPerRequest": 23.692659468287815, - "serverRssMiB": 121.203125, - "serverRetainedHeapMiB": 15.319557189941406, - "idleRssMiB": 84.578125, - "server": { - "type": "stats", - "elapsedMs": 5001.963167, - "cpu": { - "user": 4113690, - "system": 1108646 - }, - "memory": { - "rss": 127090688, - "heapTotal": 41009152, - "heapUsed": 29905336, - "external": 4262188, - "arrayBuffers": 334011 - }, - "retainedMemory": { - "rss": 127123456, - "heapTotal": 39436288, - "heapUsed": 16063720, - "external": 4262188, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124144 - }, - "idleMemory": { - "rss": 88686592, - "heapTotal": 33669120, - "heapUsed": 14158272, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 6, - "requests": 204589, - "errors": 0, - "elapsedMs": 5001.261959000025, - "rps": 40907.47528867823, - "latencyMs": { - "mean": 1.221942230031814, - "p50": 1.166, - "p95": 1.392, - "p99": 2.349, - "max": 6.4242499999236315 - }, - "clientCpuPercent": 95.12489125747025, - "serverCpuPercent": 104.30824256371915, - "serverCpuUsPerRequest": 25.501630097414818, - "serverRssMiB": 122.9375, - "serverRetainedHeapMiB": 15.668983459472656, - "idleRssMiB": 84.6875, - "server": { - "type": "stats", - "elapsedMs": 5001.860708, - "cpu": { - "user": 4169180, - "system": 1048173 - }, - "memory": { - "rss": 128909312, - "heapTotal": 41533440, - "heapUsed": 27021624, - "external": 4234172, - "arrayBuffers": 305995 - }, - "retainedMemory": { - "rss": 128925696, - "heapTotal": 40222720, - "heapUsed": 16430120, - "external": 4234172, - "arrayBuffers": 277690 - }, - "maxRssKiB": 125904 - }, - "idleMemory": { - "rss": 88801280, - "heapTotal": 33931264, - "heapUsed": 14158736, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 6, - "requests": 211027, - "errors": 0, - "elapsedMs": 5001.181624999968, - "rps": 42195.42816543907, - "latencyMs": { - "mean": 1.184626394693658, - "p50": 1.131, - "p95": 1.361, - "p99": 2.274, - "max": 5.456666999962181 - }, - "clientCpuPercent": 96.4935361650664, - "serverCpuPercent": 104.23496097329894, - "serverCpuUsPerRequest": 24.706795812858072, - "serverRssMiB": 114.25, - "serverRetainedHeapMiB": 13.702362060546875, - "idleRssMiB": 80.53125, - "server": { - "type": "stats", - "elapsedMs": 5001.969542000001, - "cpu": { - "user": 4085079, - "system": 1128722 - }, - "memory": { - "rss": 119799808, - "heapTotal": 34357248, - "heapUsed": 15635296, - "external": 4266805, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119881728, - "heapTotal": 34095104, - "heapUsed": 14367968, - "external": 4266805, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117072 - }, - "idleMemory": { - "rss": 84443136, - "heapTotal": 31473664, - "heapUsed": 12355424, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 6, - "requests": 239161, - "errors": 0, - "elapsedMs": 5000.594875000068, - "rps": 47826.50984099102, - "latencyMs": { - "mean": 1.0452351406121794, - "p50": 1, - "p95": 1.397, - "p99": 2.024, - "max": 6.022084000054747 - }, - "clientCpuPercent": 100.48014537470267, - "serverCpuPercent": 101.9996239410349, - "serverCpuUsPerRequest": 21.330016181568066, - "serverRssMiB": 108.734375, - "serverRetainedHeapMiB": 11.724632263183594, - "idleRssMiB": 74.796875, - "server": { - "type": "stats", - "elapsedMs": 5001.300792, - "cpu": { - "user": 3698785, - "system": 1402523 - }, - "memory": { - "rss": 114016256, - "heapTotal": 31473664, - "heapUsed": 16549160, - "external": 4206287, - "arrayBuffers": 307893 - }, - "retainedMemory": { - "rss": 114065408, - "heapTotal": 31473664, - "heapUsed": 12294168, - "external": 4206287, - "arrayBuffers": 277690 - }, - "maxRssKiB": 111392 - }, - "idleMemory": { - "rss": 78430208, - "heapTotal": 20987904, - "heapUsed": 10622616, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 6, - "requests": 233819, - "errors": 0, - "elapsedMs": 5000.734959000023, - "rps": 46756.92711512066, - "latencyMs": { - "mean": 1.0690970772947097, - "p50": 0.944, - "p95": 1.847, - "p99": 1.984, - "max": 5.964917000033893 - }, - "clientCpuPercent": 100.15181850392437, - "serverCpuPercent": 104.0278730874788, - "serverCpuUsPerRequest": 22.251976956534754, - "serverRssMiB": 111.5, - "serverRetainedHeapMiB": 11.981666564941406, - "idleRssMiB": 75.21875, - "server": { - "type": "stats", - "elapsedMs": 5001.481666, - "cpu": { - "user": 3943278, - "system": 1259657 - }, - "memory": { - "rss": 116916224, - "heapTotal": 31735808, - "heapUsed": 15211944, - "external": 4189259, - "arrayBuffers": 290865 - }, - "retainedMemory": { - "rss": 117047296, - "heapTotal": 31473664, - "heapUsed": 12563688, - "external": 4189259, - "arrayBuffers": 277690 - }, - "maxRssKiB": 114304 - }, - "idleMemory": { - "rss": 78872576, - "heapTotal": 20463616, - "heapUsed": 10621840, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 6, - "requests": 157250, - "errors": 0, - "elapsedMs": 5001.552790999995, - "rps": 31440.235976907472, - "latencyMs": { - "mean": 1.5898334136280359, - "p50": 1.534, - "p95": 1.878, - "p99": 3.07, - "max": 6.190375000005588 - }, - "clientCpuPercent": 78.98163160665526, - "serverCpuPercent": 104.38574816268418, - "serverCpuUsPerRequest": 33.20518282988871, - "serverRssMiB": 220.046875, - "serverRetainedHeapMiB": 15.74420166015625, - "idleRssMiB": 85.953125, - "server": { - "type": "stats", - "elapsedMs": 5002.134, - "cpu": { - "user": 4299952, - "system": 921563 - }, - "memory": { - "rss": 230735872, - "heapTotal": 158695424, - "heapUsed": 53937712, - "external": 4720941, - "arrayBuffers": 755122 - }, - "retainedMemory": { - "rss": 230326272, - "heapTotal": 156860416, - "heapUsed": 16508992, - "external": 4720941, - "arrayBuffers": 277690 - }, - "maxRssKiB": 225456 - }, - "idleMemory": { - "rss": 90128384, - "heapTotal": 33914880, - "heapUsed": 14019296, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 6, - "requests": 181052, - "errors": 0, - "elapsedMs": 5001.403000000049, - "rps": 36200.242212034944, - "latencyMs": { - "mean": 1.3808115435729944, - "p50": 1.332, - "p95": 1.526, - "p99": 2.67, - "max": 6.690000000060536 - }, - "clientCpuPercent": 88.6637809430665, - "serverCpuPercent": 104.35190010416243, - "serverCpuUsPerRequest": 28.82972847579701, - "serverRssMiB": 119.140625, - "serverRetainedHeapMiB": 13.823318481445312, - "idleRssMiB": 81.75, - "server": { - "type": "stats", - "elapsedMs": 5001.998041999999, - "cpu": { - "user": 4235327, - "system": 984353 - }, - "memory": { - "rss": 124928000, - "heapTotal": 39682048, - "heapUsed": 24585920, - "external": 4268917, - "arrayBuffers": 381034 - }, - "retainedMemory": { - "rss": 124502016, - "heapTotal": 37847040, - "heapUsed": 14494800, - "external": 4268917, - "arrayBuffers": 277690 - }, - "maxRssKiB": 122096 - }, - "idleMemory": { - "rss": 85721088, - "heapTotal": 31293440, - "heapUsed": 12363304, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 6, - "requests": 167518, - "errors": 0, - "elapsedMs": 5001.443791999947, - "rps": 33493.9283468412, - "latencyMs": { - "mean": 1.4923237874796005, - "p50": 1.436, - "p95": 1.698, - "p99": 2.891, - "max": 7.116042000008747 - }, - "clientCpuPercent": 83.48773221602656, - "serverCpuPercent": 104.34873615364207, - "serverCpuUsPerRequest": 31.158365071216227, - "serverRssMiB": 121.140625, - "serverRetainedHeapMiB": 14.084930419921875, - "idleRssMiB": 81.5625, - "server": { - "type": "stats", - "elapsedMs": 5002.060583, - "cpu": { - "user": 4331239, - "system": 888348 - }, - "memory": { - "rss": 127025152, - "heapTotal": 38633472, - "heapUsed": 22933608, - "external": 4255589, - "arrayBuffers": 367706 - }, - "retainedMemory": { - "rss": 127025152, - "heapTotal": 37322752, - "heapUsed": 14769120, - "external": 4255589, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124048 - }, - "idleMemory": { - "rss": 85524480, - "heapTotal": 31293440, - "heapUsed": 12363792, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 7, - "requests": 224802, - "errors": 0, - "elapsedMs": 5001.011749999947, - "rps": 44951.30410361511, - "latencyMs": { - "mean": 1.112013243294165, - "p50": 1.06, - "p95": 1.618, - "p99": 2.153, - "max": 6.444999999948777 - }, - "clientCpuPercent": 99.03973930875192, - "serverCpuPercent": 104.28492579671824, - "serverCpuUsPerRequest": 23.20307203672565, - "serverRssMiB": 121.46875, - "serverRetainedHeapMiB": 15.379371643066406, - "idleRssMiB": 84.5, - "server": { - "type": "stats", - "elapsedMs": 5001.774667, - "cpu": { - "user": 4142099, - "system": 1073998 - }, - "memory": { - "rss": 127369216, - "heapTotal": 41271296, - "heapUsed": 29712304, - "external": 4260284, - "arrayBuffers": 332107 - }, - "retainedMemory": { - "rss": 127401984, - "heapTotal": 38649856, - "heapUsed": 16126440, - "external": 4260284, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124416 - }, - "idleMemory": { - "rss": 88604672, - "heapTotal": 33669120, - "heapUsed": 14158000, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 7, - "requests": 209127, - "errors": 0, - "elapsedMs": 5001.1893329999875, - "rps": 41815.45350024854, - "latencyMs": { - "mean": 1.195421534354617, - "p50": 1.148, - "p95": 1.299, - "p99": 2.309, - "max": 5.630499999970198 - }, - "clientCpuPercent": 95.72756960849121, - "serverCpuPercent": 103.58647123409925, - "serverCpuUsPerRequest": 24.77613125038852, - "serverRssMiB": 122.625, - "serverRetainedHeapMiB": 15.577156066894531, - "idleRssMiB": 84.4375, - "server": { - "type": "stats", - "elapsedMs": 5001.964, - "cpu": { - "user": 4215152, - "system": 966206 - }, - "memory": { - "rss": 128581632, - "heapTotal": 40484864, - "heapUsed": 27901328, - "external": 4241788, - "arrayBuffers": 313611 - }, - "retainedMemory": { - "rss": 128630784, - "heapTotal": 39960576, - "heapUsed": 16333832, - "external": 4241788, - "arrayBuffers": 277690 - }, - "maxRssKiB": 125616 - }, - "idleMemory": { - "rss": 88539136, - "heapTotal": 33669120, - "heapUsed": 14159160, - "external": 4205824, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 7, - "requests": 186695, - "errors": 0, - "elapsedMs": 5001.325208000024, - "rps": 37329.106233957005, - "latencyMs": { - "mean": 1.3390383040412828, - "p50": 1.289, - "p95": 1.507, - "p99": 2.589, - "max": 6.50062499998603 - }, - "clientCpuPercent": 90.27279395425346, - "serverCpuPercent": 104.08611710848444, - "serverCpuUsPerRequest": 27.887061785264738, - "serverRssMiB": 140.171875, - "serverRetainedHeapMiB": 17.28986358642578, - "idleRssMiB": 88.21875, - "server": { - "type": "stats", - "elapsedMs": 5001.987916, - "cpu": { - "user": 4228872, - "system": 977503 - }, - "memory": { - "rss": 146980864, - "heapTotal": 59097088, - "heapUsed": 35050408, - "external": 4399525, - "arrayBuffers": 410427 - }, - "retainedMemory": { - "rss": 147013632, - "heapTotal": 57262080, - "heapUsed": 18129736, - "external": 4399525, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143568 - }, - "idleMemory": { - "rss": 92504064, - "heapTotal": 35241984, - "heapUsed": 15781696, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 7, - "requests": 240498, - "errors": 0, - "elapsedMs": 5000.592708000098, - "rps": 48093.8988722765, - "latencyMs": { - "mean": 1.03938884964956, - "p50": 0.99, - "p95": 1.389, - "p99": 2.005, - "max": 6.347792000044137 - }, - "clientCpuPercent": 100.45383204202163, - "serverCpuPercent": 101.9256493398808, - "serverCpuUsPerRequest": 21.19558166803882, - "serverRssMiB": 109.265625, - "serverRetainedHeapMiB": 11.784309387207031, - "idleRssMiB": 75.578125, - "server": { - "type": "stats", - "elapsedMs": 5001.189625, - "cpu": { - "user": 3707317, - "system": 1390178 - }, - "memory": { - "rss": 114573312, - "heapTotal": 31473664, - "heapUsed": 19194592, - "external": 4232603, - "arrayBuffers": 334209 - }, - "retainedMemory": { - "rss": 114606080, - "heapTotal": 31473664, - "heapUsed": 12356744, - "external": 4232603, - "arrayBuffers": 277690 - }, - "maxRssKiB": 111920 - }, - "idleMemory": { - "rss": 79249408, - "heapTotal": 21512192, - "heapUsed": 10624976, - "external": 4686097, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 7, - "requests": 234252, - "errors": 0, - "elapsedMs": 5000.672791999998, - "rps": 46844.09673329414, - "latencyMs": { - "mean": 1.0671223836638022, - "p50": 0.945, - "p95": 1.846, - "p99": 1.979, - "max": 5.4303340000333264 - }, - "clientCpuPercent": 100.14208504126424, - "serverCpuPercent": 104.29403327300444, - "serverCpuUsPerRequest": 22.26693475402558, - "serverRssMiB": 111.125, - "serverRetainedHeapMiB": 12.048995971679688, - "idleRssMiB": 74.359375, - "server": { - "type": "stats", - "elapsedMs": 5001.315834, - "cpu": { - "user": 3948925, - "system": 1267149 - }, - "memory": { - "rss": 116523008, - "heapTotal": 31473664, - "heapUsed": 14405704, - "external": 4182551, - "arrayBuffers": 284157 - }, - "retainedMemory": { - "rss": 116539392, - "heapTotal": 31473664, - "heapUsed": 12634288, - "external": 4182551, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113808 - }, - "idleMemory": { - "rss": 77971456, - "heapTotal": 20725760, - "heapUsed": 10622760, - "external": 4176041, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 7, - "requests": 213862, - "errors": 0, - "elapsedMs": 5001.141583000077, - "rps": 42762.63658020832, - "latencyMs": { - "mean": 1.168953320991959, - "p50": 1.114, - "p95": 1.373, - "p99": 2.253, - "max": 6.2269999999552965 - }, - "clientCpuPercent": 97.0094511319482, - "serverCpuPercent": 104.27473593776293, - "serverCpuUsPerRequest": 24.387483517408423, - "serverRssMiB": 113.703125, - "serverRetainedHeapMiB": 13.813774108886719, - "idleRssMiB": 80.328125, - "server": { - "type": "stats", - "elapsedMs": 5001.744624999999, - "cpu": { - "user": 4086130, - "system": 1129426 - }, - "memory": { - "rss": 119226368, - "heapTotal": 33832960, - "heapUsed": 18465472, - "external": 4285510, - "arrayBuffers": 296412 - }, - "retainedMemory": { - "rss": 119275520, - "heapTotal": 33832960, - "heapUsed": 14484792, - "external": 4285510, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116480 - }, - "idleMemory": { - "rss": 84230144, - "heapTotal": 31211520, - "heapUsed": 12357072, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 7, - "requests": 183054, - "errors": 0, - "elapsedMs": 5001.366875000065, - "rps": 36600.794257869275, - "latencyMs": { - "mean": 1.3657213053033972, - "p50": 1.312, - "p95": 1.562, - "p99": 2.633, - "max": 6.726583000039682 - }, - "clientCpuPercent": 89.3817852544549, - "serverCpuPercent": 104.25952985813296, - "serverCpuUsPerRequest": 28.48883935887771, - "serverRssMiB": 119.390625, - "serverRetainedHeapMiB": 13.815422058105469, - "idleRssMiB": 81.8125, - "server": { - "type": "stats", - "elapsedMs": 5001.937, - "cpu": { - "user": 4291865, - "system": 923131 - }, - "memory": { - "rss": 125190144, - "heapTotal": 39944192, - "heapUsed": 22574736, - "external": 4250421, - "arrayBuffers": 362538 - }, - "retainedMemory": { - "rss": 125222912, - "heapTotal": 37060608, - "heapUsed": 14486520, - "external": 4250421, - "arrayBuffers": 277690 - }, - "maxRssKiB": 122288 - }, - "idleMemory": { - "rss": 85786624, - "heapTotal": 31817728, - "heapUsed": 12363064, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 7, - "requests": 167796, - "errors": 0, - "elapsedMs": 5001.414667000063, - "rps": 33549.70766714031, - "latencyMs": { - "mean": 1.4899280526173846, - "p50": 1.444, - "p95": 1.635, - "p99": 2.888, - "max": 6.154458999983035 - }, - "clientCpuPercent": 83.38220838828015, - "serverCpuPercent": 104.43433679858263, - "serverCpuUsPerRequest": 31.131850580466757, - "serverRssMiB": 121.453125, - "serverRetainedHeapMiB": 14.076332092285156, - "idleRssMiB": 82, - "server": { - "type": "stats", - "elapsedMs": 5001.994708, - "cpu": { - "user": 4302943, - "system": 920857 - }, - "memory": { - "rss": 127352832, - "heapTotal": 39419904, - "heapUsed": 23333272, - "external": 4261029, - "arrayBuffers": 373146 - }, - "retainedMemory": { - "rss": 127074304, - "heapTotal": 38371328, - "heapUsed": 14760104, - "external": 4261029, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124448 - }, - "idleMemory": { - "rss": 85983232, - "heapTotal": 31555584, - "heapUsed": 12363952, - "external": 4165530, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 7, - "requests": 155251, - "errors": 0, - "elapsedMs": 5001.599209000007, - "rps": 31040.272023523463, - "latencyMs": { - "mean": 1.6103464502386138, - "p50": 1.548, - "p95": 1.909, - "p99": 3.105, - "max": 7.933707999996841 - }, - "clientCpuPercent": 78.19622957717871, - "serverCpuPercent": 104.5106072994773, - "serverCpuUsPerRequest": 33.67560273363779, - "serverRssMiB": 221.109375, - "serverRetainedHeapMiB": 15.587318420410156, - "idleRssMiB": 85.90625, - "server": { - "type": "stats", - "elapsedMs": 5002.526667, - "cpu": { - "user": 4307008, - "system": 921163 - }, - "memory": { - "rss": 231849984, - "heapTotal": 157908992, - "heapUsed": 52332784, - "external": 4709789, - "arrayBuffers": 743970 - }, - "retainedMemory": { - "rss": 231849984, - "heapTotal": 156860416, - "heapUsed": 16344488, - "external": 4709789, - "arrayBuffers": 277690 - }, - "maxRssKiB": 226416 - }, - "idleMemory": { - "rss": 90079232, - "heapTotal": 32866304, - "heapUsed": 14019312, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native", - "round": 7, - "requests": 222130, - "errors": 0, - "elapsedMs": 5001.073958999943, - "rps": 44416.45970867005, - "latencyMs": { - "mean": 1.1254221792869838, - "p50": 1.07, - "p95": 1.453, - "p99": 2.168, - "max": 10.828042000066489 - }, - "clientCpuPercent": 98.79585945951527, - "serverCpuPercent": 104.88039794716492, - "serverCpuUsPerRequest": 23.61564849412506, - "serverRssMiB": 113.171875, - "serverRetainedHeapMiB": 13.803535461425781, - "idleRssMiB": 81.765625, - "server": { - "type": "stats", - "elapsedMs": 5001.643875, - "cpu": { - "user": 4090583, - "system": 1155161 - }, - "memory": { - "rss": 118669312, - "heapTotal": 33914880, - "heapUsed": 16873608, - "external": 4191717, - "arrayBuffers": 286819 - }, - "retainedMemory": { - "rss": 118669312, - "heapTotal": 33914880, - "heapUsed": 14474056, - "external": 4191717, - "arrayBuffers": 277690 - }, - "maxRssKiB": 115888 - }, - "idleMemory": { - "rss": 85737472, - "heapTotal": 31555584, - "heapUsed": 12357048, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 7, - "requests": 207388, - "errors": 0, - "elapsedMs": 5001.240166999982, - "rps": 41467.314720941045, - "latencyMs": { - "mean": 1.2054532490742085, - "p50": 1.15, - "p95": 1.392, - "p99": 2.342, - "max": 5.48741699999664 - }, - "clientCpuPercent": 95.4848965564588, - "serverCpuPercent": 105.01876982354973, - "serverCpuUsPerRequest": 25.329589947345074, - "serverRssMiB": 115.25, - "serverRetainedHeapMiB": 13.963447570800781, - "idleRssMiB": 82.09375, - "server": { - "type": "stats", - "elapsedMs": 5002.013457999999, - "cpu": { - "user": 4238888, - "system": 1014165 - }, - "memory": { - "rss": 120848384, - "heapTotal": 34177024, - "heapUsed": 20771112, - "external": 4213613, - "arrayBuffers": 308715 - }, - "retainedMemory": { - "rss": 120864768, - "heapTotal": 34177024, - "heapUsed": 14641736, - "external": 4213613, - "arrayBuffers": 277690 - }, - "maxRssKiB": 118032 - }, - "idleMemory": { - "rss": 86081536, - "heapTotal": 31555584, - "heapUsed": 12360232, - "external": 4182545, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 7, - "requests": 202585, - "errors": 0, - "elapsedMs": 5001.2191250000615, - "rps": 40507.12335064853, - "latencyMs": { - "mean": 1.2340323623662932, - "p50": 1.188, - "p95": 1.421, - "p99": 2.38, - "max": 5.261667000013404 - }, - "clientCpuPercent": 93.98246472553714, - "serverCpuPercent": 104.85482955600334, - "serverCpuUsPerRequest": 25.888585038378952, - "serverRssMiB": 118.515625, - "serverRetainedHeapMiB": 15.622993469238281, - "idleRssMiB": 86.234375, - "server": { - "type": "stats", - "elapsedMs": 5001.809666, - "cpu": { - "user": 4191430, - "system": 1053209 - }, - "memory": { - "rss": 124272640, - "heapTotal": 36012032, - "heapUsed": 19595312, - "external": 4255358, - "arrayBuffers": 289539 - }, - "retainedMemory": { - "rss": 124272640, - "heapTotal": 35487744, - "heapUsed": 16381896, - "external": 4255358, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121360 - }, - "idleMemory": { - "rss": 90423296, - "heapTotal": 32866304, - "heapUsed": 13957864, - "external": 4440228, - "arrayBuffers": 212115 - } - } - ], - "finishedAt": "2026-10-27T15:55:37.734Z", - "elapsedSeconds": 683.9340245000001 -} From 24c91d78ef5337db44cd22f001caf1770fa864e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=AE=87=E7=BF=94?= Date: Wed, 28 Oct 2026 00:10:17 +0800 Subject: [PATCH 06/12] bench: remove investigation-specific report commentary --- benchmarks/report.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/benchmarks/report.mjs b/benchmarks/report.mjs index 4a9935c..fd80f00 100644 --- a/benchmarks/report.mjs +++ b/benchmarks/report.mjs @@ -1,4 +1,4 @@ -// node benchmarks/report.mjs benchmarks/results/2026-10-27.json +// node benchmarks/report.mjs benchmarks/results/latest.json // Produces self-contained HTML plus summary JSON and CSV beside the raw samples. import { readFileSync, writeFileSync } from "node:fs"; import { resolve, basename } from "node:path"; @@ -240,7 +240,6 @@ const html = `典型 POST 的吞吐量
    ${charts}

    本次观察

      ${findings}

    加入 5ms 异步等待后,同等校验基线下的吞吐变化为:${ioFindings || "本次未测"}。这只是固定等待模型;线上数据库、连接池和下游服务的瓶颈会改变结果。

    -

    从实现看,bind 阶段预组装校验函数和中间件链,但每个请求仍会创建 Context、Reply、分层校验结果、扁平参数和 registerTyped 的请求对象,并执行 Promise 调度。因此“预编译”不等于整个接入层零分配或零开销。后续优化可优先检查这些路径;本次没有做分配剖析或逐项优化实验,不能把实测差异拆分归因到某一项。

    接入影响与原始指标

    吞吐变化 = erest 吞吐中位数 ÷ 基线吞吐中位数 − 1;负值表示下降。配对范围按同轮次计算,不是置信区间。延迟是客户端从发起请求到读完响应的时间;50 并发时包含排队与调度,不能把延迟差当作纯 erest 执行时间。表内延迟分位数为各轮分位数的中位数,不是合并所有请求后的分位数。

    From 0d555732d1f5cac95f54a2281c4bcbd1121e0e24 Mon Sep 17 00:00:00 2001 From: yourtion Date: Wed, 28 Oct 2026 00:11:32 +0800 Subject: [PATCH 07/12] bench: add isolated HTTP optimization experiments --- benchmarks/experiments/prepare.mjs | 121 +++++++++++++++++++++++++++++ benchmarks/run.mjs | 25 ++++-- benchmarks/server.mjs | 16 ++-- 3 files changed, 152 insertions(+), 10 deletions(-) create mode 100644 benchmarks/experiments/prepare.mjs diff --git a/benchmarks/experiments/prepare.mjs b/benchmarks/experiments/prepare.mjs new file mode 100644 index 0000000..5554ac0 --- /dev/null +++ b/benchmarks/experiments/prepare.mjs @@ -0,0 +1,121 @@ +// Isolated, reproducible compiled-runtime experiments. Never edits src/ or package dist/. +import assert from "node:assert/strict"; +import { cpSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import { createHash } from "node:crypto"; +import { resolve, relative, dirname } from "node:path"; +import { fileURLToPath } from "node:url"; +import { execFileSync } from "node:child_process"; + +const root = resolve(dirname(fileURLToPath(import.meta.url)), "../.."); +const destination = resolve(root, "benchmarks/results/experiments/runtimes"); +const frameworks = ["express", "koa", "leizmweb", "h3"]; +const adapterFile = (framework) => `packages/erest-${framework}/dist/index.js`; +const hash = (source) => createHash("sha256").update(source).digest("hex"); +const baseline = Object.fromEntries( + ["dist/lib/api.js", "dist/lib/adapters/utils.js", "dist/lib/params.js", ...frameworks.map(adapterFile)] + .map((name) => [name, hash(readFileSync(resolve(root, name)))]) +); +const variants = {}; + +function replace(source, before, after) { + assert.equal(source.split(before).length - 1, 1, `Patch must match exactly once: ${before}`); + return source.replace(before, after); +} + +const changes = { + hoist: { + frameworks: frameworks.slice(0, 3), + description: "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly.", + caveat: "Must retain existing hook binding semantics and all layered/requiredOneOf behavior.", + patch(file, source) { + if (!frameworks.slice(0, 3).map(adapterFile).includes(file)) return source; + source = replace(source, + "const checker = (ctx, next) => {\n const compiled = api.options.compiled;", + "const compiled = api.options.compiled;\n const requiredOneOf = api.options.requiredOneOf;\n const onValidate = erest.getHooks()?.onValidate;\n const checker = (ctx, next) => {"); + source = replace(source, + "compiled.validate({\n params: ctx.params,\n query: ctx.query,\n body: ctx.body,\n headers: ctx.headers,\n })", + "compiled.validate(ctx)"); + source = replace(source, " const requiredOneOf = api.options.requiredOneOf;\n", ""); + return replace(source, " const onValidate = erest.getHooks()?.onValidate;\n", ""); + }, + }, + assign: { + frameworks, + description: "Replace four object spreads for flat params with Object.assign.", + caveat: "Diagnostic only: Object.assign treats an own __proto__ key differently; not safe to ship unchanged.", + patch(file, source) { + if (!frameworks.map(adapterFile).includes(file)) return source; + const before = "{ ...layered.params, ...layered.query, ...layered.body, ...layered.headers }"; + assert.ok(source.includes(before)); + return source.replaceAll(before, "Object.assign({}, layered.params, layered.query, layered.body, layered.headers)"); + }, + }, + sync: { + frameworks, + description: "Avoid unconditional async typed-handler wrapper; resolve async results via a shared finish callback.", + caveat: "Check rejection, response schemas, envelope return bookkeeping and async onion middleware before shipping.", + patch(file, source) { + if (file !== "dist/lib/api.js") return source; + source = replace(source, "const wrappedHandler = async (ctx) => {", "const wrappedHandler = (ctx) => {"); + source = replace(source, "const resolved = result instanceof Promise ? await result : result;", "const finish = (resolved) => {"); + return replace(source, + "ctxExt.__returnValue = resolved;\n };", + "ctxExt.__returnValue = resolved;\n };\n if (result instanceof Promise) return result.then(finish);\n finish(result);\n };"); + }, + }, + headers: { + frameworks: ["h3"], + description: "Lazily materialize H3 ctx.headers on first access, cache the object and keep a setter.", + caveat: "Header snapshot timing/property descriptors differ; reject as a drop-in optimization without an API decision.", + patch(file, source) { + if (file !== adapterFile("h3")) return source; + return replace(source, "headers: Object.fromEntries(event.req.headers),", `get headers() { + const value = Object.fromEntries(event.req.headers); + Object.defineProperty(this, "headers", { value, writable: true, enumerable: true, configurable: true }); + return value; + }, + set headers(value) { + Object.defineProperty(this, "headers", { value, writable: true, enumerable: true, configurable: true }); + },`); + }, + }, +}; + +// A combined variant is generated only when explicitly requested after screening. +const definitions = { ...Object.fromEntries(Object.entries(changes).map(([name, change]) => [name, [name]])) }; +if (process.env.BENCH_COMBINE) definitions.combined = process.env.BENCH_COMBINE.split(","); + +for (const [name, patches] of Object.entries(definitions)) { + assert(patches.every((patch) => changes[patch]), "Unknown BENCH_COMBINE patch"); + const dir = resolve(destination, name); + mkdirSync(dir, { recursive: true }); + writeFileSync(resolve(dir, "package.json"), '{"type":"module"}\n'); + cpSync(resolve(root, "dist/lib"), resolve(dir, "dist/lib"), { recursive: true }); + for (const framework of frameworks) cpSync(resolve(root, `packages/erest-${framework}/dist`), resolve(dir, `packages/erest-${framework}/dist`), { recursive: true }); + const files = {}; + for (const file of Object.keys(baseline)) { + const original = readFileSync(resolve(root, file), "utf8"); + let source = patches.reduce((value, patch) => changes[patch].patch(file, value), original); + // Adapter package imports must use this runtime's core, rather than the root's self-reference. + if (frameworks.map(adapterFile).includes(file)) source = replace(source, 'from "erest"', 'from "../../../dist/lib/index.js"'); + writeFileSync(resolve(dir, file), source); + files[file] = { baseline: baseline[file], candidate: hash(source) }; + } + variants[name] = { + runtimeRoot: relative(root, dir), + frameworks: patches.length === 1 ? changes[patches[0]].frameworks : frameworks, + patches, + descriptions: patches.map((patch) => changes[patch].description), + caveats: patches.map((patch) => changes[patch].caveat), + files, + }; +} +const manifest = { + commit: execFileSync("git", ["rev-parse", "HEAD"], { cwd: root, encoding: "utf8" }).trim(), + prepareSha256: hash(readFileSync(fileURLToPath(import.meta.url))), + baseline, + variants, +}; +const output = resolve(destination, "../manifest.json"); +writeFileSync(output, `${JSON.stringify(manifest, null, 2)}\n`); +console.log(output); diff --git a/benchmarks/run.mjs b/benchmarks/run.mjs index 96b19d2..3e236d8 100644 --- a/benchmarks/run.mjs +++ b/benchmarks/run.mjs @@ -40,6 +40,14 @@ assert( assert(!config.serverCpu || process.platform === "linux", "BENCH_SERVER_CPU uses Linux taskset; omit it on macOS"); const destination = resolve(root, process.env.BENCH_OUT || "benchmarks/results/latest.json"); mkdirSync(dirname(destination), { recursive: true }); +const experiments = process.env.BENCH_VARIANTS_FILE + ? JSON.parse(readFileSync(resolve(process.env.BENCH_VARIANTS_FILE), "utf8")) + : null; +const selectedVariants = experiments + ? list("BENCH_VARIANTS", Object.keys(experiments.variants).join(",")) + : []; +assert(selectedVariants.every((name) => experiments.variants[name]), "Unknown BENCH_VARIANTS value"); +if (process.env.BENCH_PROFILE_DIR) mkdirSync(resolve(process.env.BENCH_PROFILE_DIR), { recursive: true }); function read(filePath) { try { return readFileSync(filePath, "utf8").trim(); @@ -89,6 +97,7 @@ const result = { ), }, config, + ...(experiments ? { experiments, selectedVariants } : {}), samples: [], }; function save() { @@ -118,12 +127,17 @@ function message(child, type, send) { }); } async function sample(framework, scenario, concurrency, mode, round) { - const child = fork(resolve(root, "benchmarks/server.mjs"), [framework, mode, scenario], { + const variant = experiments?.variants[mode]; + const profileArgs = process.env.BENCH_PROFILE_DIR + ? ["--cpu-prof", `--cpu-prof-dir=${resolve(process.env.BENCH_PROFILE_DIR)}`, `--cpu-prof-name=${framework}-${scenario}-c${concurrency}-${mode}-r${round}.cpuprofile`] + : []; + assert(!config.serverCpu || !profileArgs.length, "Use profiling separately from CPU affinity runs"); + const child = fork(resolve(root, "benchmarks/server.mjs"), [framework, variant ? "erest" : mode, scenario], { cwd: root, ...(config.serverCpu ? { execPath: "/usr/bin/taskset", execArgv: ["-c", config.serverCpu, process.execPath, "--expose-gc"] } - : { execArgv: ["--expose-gc"] }), - env: { ...process.env, NODE_ENV: "production", DEBUG: "" }, + : { execArgv: ["--expose-gc", ...profileArgs] }), + env: { ...process.env, BENCH_RUNTIME_ROOT: variant ? resolve(root, variant.runtimeRoot) : "", NODE_ENV: "production", DEBUG: "" }, stdio: ["ignore", "ignore", "inherit", "ipc"], }); try { @@ -187,8 +201,9 @@ for (let round = 1; round <= config.rounds; round++) { const offset = (round - 1) % config.frameworks.length; for (const framework of [...config.frameworks.slice(offset), ...config.frameworks.slice(0, offset)]) { for (const scenario of config.scenarios) { - const modes = - scenario === "get" + const modes = experiments + ? ["native-zod", "erest", ...selectedVariants.filter((name) => experiments.variants[name].frameworks.includes(framework))] + : scenario === "get" ? ["native", "erest"] : scenario === "io5" ? ["native-zod", "erest"] diff --git a/benchmarks/server.mjs b/benchmarks/server.mjs index 0bd9811..bee4dca 100644 --- a/benchmarks/server.mjs +++ b/benchmarks/server.mjs @@ -2,9 +2,15 @@ import { createServer } from "node:http"; import { performance } from "node:perf_hooks"; import { setTimeout as delay } from "node:timers/promises"; +import { resolve } from "node:path"; +import { pathToFileURL } from "node:url"; import { expectedGet, output, schemas, validate } from "./fixture.mjs"; const [framework, mode, scenario] = process.argv.slice(2); +const runtimeRoot = process.env.BENCH_RUNTIME_ROOT + ? pathToFileURL(`${resolve(process.env.BENCH_RUNTIME_ROOT)}/`) + : new URL("../", import.meta.url); +const runtime = (path) => new URL(path, runtimeRoot).href; const isGet = scenario === "get"; const method = isGet ? "get" : "post"; const route = isGet ? "/ping" : "/users/:id"; @@ -25,7 +31,7 @@ if (framework === "express") { router = app; server = createServer(app); if (mode === "erest") { - const mod = await import("../packages/erest-express/dist/index.js"); + const mod = await import(runtime("packages/erest-express/dist/index.js")); adapter = new mod.ExpressAdapter(); } else { router[method]( @@ -46,7 +52,7 @@ if (framework === "express") { router = new Router(); app.use(bodyParser()); if (mode === "erest") { - const mod = await import("../packages/erest-koa/dist/index.js"); + const mod = await import(runtime("packages/erest-koa/dist/index.js")); adapter = new mod.KoaAdapter(); } else { const input = (ctx) => checked({ params: ctx.params, query: ctx.query, body: ctx.request.body }); @@ -65,7 +71,7 @@ if (framework === "express") { router = new Router(); app.use("/", component.bodyParser.json()); if (mode === "erest") { - const mod = await import("../packages/erest-leizmweb/dist/index.js"); + const mod = await import(runtime("packages/erest-leizmweb/dist/index.js")); adapter = new mod.LeizmWebAdapter(); } else { router[method]( @@ -85,7 +91,7 @@ if (framework === "express") { app = new H3({ silent: true }); router = app; if (mode === "erest") { - const mod = await import("../packages/erest-h3/dist/index.js"); + const mod = await import(runtime("packages/erest-h3/dist/index.js")); adapter = new mod.H3Adapter(); } else { const send = (event, result) => { @@ -114,7 +120,7 @@ if (framework === "express") { } if (mode === "erest") { - const { ERest } = await import("../dist/lib/index.js"); + const { ERest } = await import(runtime("dist/lib/index.js")); const service = new ERest({ info: { basePath: "" }, groups: { bench: "Benchmark" }, docs: { markdown: false } }); const api = service.api[method](route).group("bench"); if (isGet) api.register((ctx) => ctx.reply.json(expectedGet)); From cf3e4f83ecc7c366304ed47e6c00c43cdc40b5c1 Mon Sep 17 00:00:00 2001 From: yourtion Date: Wed, 28 Oct 2026 00:18:22 +0800 Subject: [PATCH 08/12] bench: compare Reply allocation and H3 header conversion costs --- CONTRIBUTING.md | 19 +++++++ benchmarks/experiments/prepare.mjs | 52 +++++++++++++++++++ benchmarks/experiments/report.mjs | 83 ++++++++++++++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 benchmarks/experiments/report.mjs diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 147fdbd..24f4006 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -80,6 +80,25 @@ BENCH_ROUNDS=1 BENCH_MS=100 BENCH_WARMUP_MS=100 \ `benchmarks/results/` 下的 JSON、CSV 和 HTML 都是被忽略的本地生成物,不随工具提交。 短测结果不是线上容量结论;只有在独立复测中出现一致趋势后,才适合讨论运行时优化。 +### 隔离优化实验 + +`benchmarks/experiments/prepare.mjs` 将已构建产物复制到被忽略的结果目录,生成带哈希的实验清单, +不改动 `src/` 或原始 `dist/`。各变体的兼容性限制记录在清单中,诊断变体不能直接用于发布。 + +```bash +node benchmarks/experiments/prepare.mjs +BENCH_VARIANTS_FILE=benchmarks/results/experiments/manifest.json \ + BENCH_SCENARIOS=post BENCH_CONCURRENCY=50 BENCH_ROUNDS=3 \ + BENCH_MS=3000 BENCH_WARMUP_MS=2000 \ + BENCH_OUT=benchmarks/results/experiments/screen.json node benchmarks/run.mjs +node benchmarks/experiments/report.mjs benchmarks/results/experiments/screen.json +``` + +`BENCH_VARIANTS` 可选择清单中的变体(逗号分隔);每轮同时测量原生加 Zod、现有 erest 和所选变体。 +报告按同框架、场景、并发、轮次配对,与 erest 对照比较;轮间范围不是置信区间。 +`BENCH_PROFILE_DIR` 可单独采集服务端 CPU profile;开启 profiler 的结果只用于定位,不参与收益比较。 +报告脚本可传入多个完整结果文件,将各阶段原始数据和比较合并到 `mac-optimization.json`,并生成 HTML。 + ## 合约专项 `test:contract` 在 Express、Koa、LeizmWeb、H3 下执行同一套 GET/POST/PUT/PATCH/DELETE 定义。 diff --git a/benchmarks/experiments/prepare.mjs b/benchmarks/experiments/prepare.mjs index 5554ac0..68c5acb 100644 --- a/benchmarks/experiments/prepare.mjs +++ b/benchmarks/experiments/prepare.mjs @@ -23,6 +23,58 @@ function replace(source, before, after) { } const changes = { + "node-headers": { + frameworks: ["h3"], + description: "Node-only diagnostic: copy IncomingMessage headers instead of converting Web Headers.", + caveat: "Not portable; raw array/duplicate-header normalization and mutations to Web Headers can differ. This is an attribution experiment, not a shippable replacement.", + patch(file, source) { + if (file !== adapterFile("h3")) return source; + return replace(source, "headers: Object.fromEntries(event.req.headers),", "headers: event.runtime?.node?.req ? { ...event.runtime.node.req.headers } : Object.fromEntries(event.req.headers),"); + }, + }, + reply: { + frameworks, + description: "Use per-request Reply instances with shared prototype methods instead of four per-request method closures.", + caveat: "Prototype/enumerability and detached method calls differ. Requires a compatibility decision and broad Reply tests before shipping.", + patch(file, source) { + const framework = frameworks.find((name) => adapterFile(name) === file); + if (!framework) return source; + const definitions = { + express: { factory: "createExpressReply", args: "req, res", raw: "{ req, res }", target: "res", + status: "this.#target.status?.(code);", + json: "this.__sent = true; this.#target.json?.(body);", + send: "this.__sent = true; this.#target.end?.(body);" }, + koa: { factory: "createKoaReply", args: "ctx", raw: "ctx", target: "ctx", + status: "this.#target.status = code;", + json: 'this.__sent = true; this.#target.type = "application/json"; this.#target.body = JSON.stringify(body);', + send: "this.__sent = true; this.#target.body = body;" }, + leizmweb: { factory: "createLeiReply", args: "ctx", raw: "ctx", target: "ctx.response ?? {}", + status: "this.#target.status?.(code);", + json: "this.__sent = true; this.#target.json?.(body);", + send: 'this.__sent = true; this.#target.setHeader?.("Content-Type", "text/plain; charset=utf-8"); this.#target.end?.(body);' }, + h3: { factory: "createH3Reply", args: "event", raw: "event", target: "event", + status: "this.#target.res.status = code;", + json: 'this.body = JSON.stringify(body) ?? ""; this.#target.res.headers.set("content-type", "application/json; charset=utf-8"); this.__sent = true;', + send: 'this.body = body; this.#target.res.headers.set("content-type", "text/plain; charset=utf-8"); this.__sent = true;' }, + }; + const d = definitions[framework]; + const start = source.indexOf(`function ${d.factory}(`); + const end = source.indexOf("\nexport const ", start); + assert(start >= 0 && end > start, "Reply factory boundaries not found"); + const implementation = `class SharedReply { + #target; + __sent = false; + constructor(raw, target) { this.raw = raw; this.#target = target; } + status(code) { ${d.status} return this; } + json(body) { ${d.json} } + send(body) { ${d.send} } + markSent() { this.__sent = true; } + } + function ${d.factory}(${d.args}) { return new SharedReply(${d.raw}, ${d.target}); } +`; + return source.slice(0, start) + implementation + source.slice(end); + }, + }, hoist: { frameworks: frameworks.slice(0, 3), description: "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly.", diff --git a/benchmarks/experiments/report.mjs b/benchmarks/experiments/report.mjs new file mode 100644 index 0000000..712eca1 --- /dev/null +++ b/benchmarks/experiments/report.mjs @@ -0,0 +1,83 @@ +// Bundle exploratory raw measurements and paired comparisons into one JSON + HTML. +import assert from "node:assert/strict"; +import { readFileSync, writeFileSync, existsSync } from "node:fs"; +import { resolve } from "node:path"; + +const inputs = process.argv.slice(2); +assert(inputs.length, "Pass screening and/or confirmation JSON paths"); +const median = (values) => { + const sorted = values.toSorted((a, b) => a - b); + const i = Math.floor(sorted.length / 2); + return sorted.length % 2 ? sorted[i] : (sorted[i - 1] + sorted[i]) / 2; +}; +const metrics = { + rps: (s) => s.rps, + cpuUs: (s) => s.serverCpuUsPerRequest, + meanMs: (s) => s.latencyMs.mean, + p95Ms: (s) => s.latencyMs.p95, + rssMiB: (s) => s.serverRssMiB, + heapMiB: (s) => s.serverRetainedHeapMiB, + clientCpu: (s) => s.clientCpuPercent, +}; +const stages = inputs.map((input) => { + const raw = JSON.parse(readFileSync(resolve(input), "utf8")); + assert(raw.finishedAt, `Incomplete run: ${input}`); + assert(raw.samples.every((s) => s.errors === 0), `Errors in ${input}`); + const groups = []; + const comparisons = []; + const grouped = Map.groupBy(raw.samples, (s) => `${s.framework}/${s.scenario}/${s.concurrency}/${s.mode}`); + for (const samples of grouped.values()) { + assert.equal(samples.length, raw.config.rounds, "Missing rounds"); + assert.equal(new Set(samples.map((s) => s.round)).size, raw.config.rounds, "Duplicate rounds"); + const first = samples[0]; + groups.push({ framework: first.framework, scenario: first.scenario, concurrency: first.concurrency, mode: first.mode, + rounds: samples.length, errors: 0, + ...Object.fromEntries(Object.entries(metrics).map(([name, getter]) => [name, median(samples.map(getter))])), + }); + } + for (const group of groups.filter((g) => !["erest", "native-zod"].includes(g.mode))) { + const candidates = grouped.get(`${group.framework}/${group.scenario}/${group.concurrency}/${group.mode}`); + const baseline = grouped.get(`${group.framework}/${group.scenario}/${group.concurrency}/erest`); + assert(baseline, "No erest control"); + const pairs = candidates.map((candidate) => { + const control = baseline.find((b) => b.round === candidate.round); + assert(control, "Unpaired sample"); + return { round: candidate.round, throughputPercent: (candidate.rps / control.rps - 1) * 100, + cpuUsDelta: candidate.serverCpuUsPerRequest - control.serverCpuUsPerRequest, + p95MsDelta: candidate.latencyMs.p95 - control.latencyMs.p95, + rssMiBDelta: candidate.serverRssMiB - control.serverRssMiB, + heapMiBDelta: candidate.serverRetainedHeapMiB - control.serverRetainedHeapMiB }; + }); + comparisons.push({ framework: group.framework, scenario: group.scenario, concurrency: group.concurrency, mode: group.mode, + medianGainPercent: median(pairs.map((p) => p.throughputPercent)), + minGainPercent: Math.min(...pairs.map((p) => p.throughputPercent)), + maxGainPercent: Math.max(...pairs.map((p) => p.throughputPercent)), + medianCpuUsDelta: median(pairs.map((p) => p.cpuUsDelta)), + medianRssMiBDelta: median(pairs.map((p) => p.rssMiBDelta)), + medianHeapMiBDelta: median(pairs.map((p) => p.heapMiBDelta)), + allRoundsPositive: pairs.every((p) => p.throughputPercent > 0), pairs, + }); + } + return { input, raw, groups, comparisons }; +}); +const profilePath = resolve("benchmarks/results/experiments/profiles-summary.json"); +const output = resolve(process.env.EXPERIMENT_OUT || "benchmarks/results/mac-optimization"); +const bundle = { generatedAt: new Date().toISOString(), + method: "Compare candidate to erest control within the same round, framework, scenario and concurrency. Profile runs are excluded from performance comparisons. Paired ranges are not confidence intervals.", + profiles: existsSync(profilePath) ? JSON.parse(readFileSync(profilePath, "utf8")) : null, + stages }; +writeFileSync(`${output}.json`, `${JSON.stringify(bundle, null, 2)}\n`); +const escape = (value) => String(value).replaceAll("&", "&").replaceAll("<", "<").replaceAll('"', """); +const number = (value, digits = 2) => Number(value).toFixed(digits); +const signed = (value, digits = 2) => `${value >= 0 ? "+" : ""}${number(value, digits)}`; +const sections = stages.map((stage) => `

    ${escape(stage.input)}

    +

    ${stage.raw.samples.length} 次采样 · ${stage.raw.config.rounds} 轮 · 预热 ${stage.raw.config.warmupMs / 1000}s / 测量 ${stage.raw.config.durationMs / 1000}s · ${escape(stage.raw.environment.node)} · ${escape(stage.raw.environment.cpu)}

    +

    提交 ${escape(stage.raw.commit)};全部 ${stage.raw.samples.reduce((sum, s) => sum + s.requests, 0).toLocaleString("en-US")} 次计时区间请求错误为 0。

    +
    +${stage.comparisons.map((c) => ``).join("")} +
    框架变体吞吐配对中位变化轮间范围CPU μs/请求变化RSS MiB 变化GC 后堆 MiB 变化
    ${escape(c.framework)}${escape(c.mode)}${signed(c.medianGainPercent)}%${signed(c.minGainPercent)}% ~ ${signed(c.maxGainPercent)}%${signed(c.medianCpuUsDelta, 3)}${signed(c.medianRssMiBDelta)}${signed(c.medianHeapMiBDelta, 3)}

    各组指标中位数

    +${stage.groups.map((g) => ``).join("")} +
    框架变体req/sCPU μs/请求P95 ms客户端 CPU %RSS MiBGC 后堆 MiB
    ${escape(g.framework)}${escape(g.mode)}${number(g.rps, 0)}${number(g.cpuUs, 3)}${number(g.p95Ms, 3)}${number(g.clientCpu, 1)}${number(g.rssMiB)}${number(g.heapMiB)}
    实验实现和兼容性限制
    ${escape(JSON.stringify(stage.raw.experiments?.variants ?? {}, null, 2))}
    `).join(""); +writeFileSync(`${output}.html`, `erest 优化探索

    erest HTTP 优化探索

    每个候选与同轮 erest 对照比较;正吞吐变化表示更快,负 CPU 变化表示每请求更省 CPU。范围反映轮间波动,并非置信区间。诊断变体可能改变语义,兼容性限制见每轮实验清单。CPU profile 仅用于定位,没有混入收益比较。

    客户端接近一个逻辑核时可能限制吞吐;RSS 为 V8 运行时快照,不能单凭该值推断内存泄漏。结果仅适用于此请求模型。

    ${sections}`); +console.log(JSON.stringify(stages.map((stage) => ({ input: stage.input, comparisons: stage.comparisons.map(({pairs, ...rest}) => rest) })), null, 2)); +console.log(`Saved ${output}.json and ${output}.html`); From dfa724ec728d33655fc34cfda21b48e644b8dfee Mon Sep 17 00:00:00 2001 From: yourtion Date: Wed, 28 Oct 2026 00:23:41 +0800 Subject: [PATCH 09/12] bench: verify portable H3 header copying against HTTP semantics --- benchmarks/experiments/check-headers.mjs | 59 ++++++++++++++++++++++++ benchmarks/experiments/prepare.mjs | 21 ++++++++- benchmarks/experiments/report.mjs | 7 ++- 3 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 benchmarks/experiments/check-headers.mjs diff --git a/benchmarks/experiments/check-headers.mjs b/benchmarks/experiments/check-headers.mjs new file mode 100644 index 0000000..ce80c27 --- /dev/null +++ b/benchmarks/experiments/check-headers.mjs @@ -0,0 +1,59 @@ +// Real HTTP differential checks, including mutations before erest snapshots headers. +import assert from "node:assert/strict"; +import { createServer } from "node:http"; +import { readFileSync, writeFileSync } from "node:fs"; +import { resolve } from "node:path"; +import { pathToFileURL } from "node:url"; +import { H3 } from "h3"; + +const manifest = JSON.parse(readFileSync("benchmarks/results/experiments/manifest.json", "utf8")); +const roots = { erest: ".", control: manifest.variants.control.runtimeRoot, foreach: manifest.variants.foreach.runtimeRoot, "node-headers": manifest.variants["node-headers"].runtimeRoot }; +const cases = []; +for (const [variant, root] of Object.entries(roots)) { + const core = await import(pathToFileURL(resolve(root, "dist/lib/index.js")).href); + const { H3Adapter } = await import(pathToFileURL(resolve(root, "packages/erest-h3/dist/index.js")).href); + const { toNodeHandler } = await import("h3/node"); + const app = new H3({ silent: true, onRequest(event) { + event.req.headers.set("x-app", "updated-before-dispatch"); + // Set through Web Headers too: the Node bridge can discard this incoming key. + event.req.headers.set("__proto__", "special"); + } }); + const service = new core.ERest({ info: { basePath: "" }, groups: { test: "Test" }, docs: { markdown: false } }); + service.api.get("/headers").group("test").register((ctx) => { + // Changes after the snapshot must not change ctx.headers. + ctx.reply.raw.req.headers.set("x-after", "not-in-snapshot"); + const first = ctx.headers; + const sameObject = first === ctx.headers; + ctx.reply.json({ headers: first, keys: Object.keys(first), sameObject, prototype: Object.getPrototypeOf(first) === Object.prototype }); + }); + service.bind({ adapter: new H3Adapter(), router: app }); + const server = createServer(toNodeHandler(app)); + await new Promise((accept, reject) => { server.once("error", reject); server.listen(0, "127.0.0.1", accept); }); + try { + const headers = new Headers([["__proto__", "special"], ["x-duplicate", "a"], ["x-duplicate", "b"], ["set-cookie", "a=1"], ["set-cookie", "b=2"], ["cookie", "a=1"], ["cookie", "b=2"]]); + const response = await fetch(`http://127.0.0.1:${server.address().port}/headers`, { headers }); + assert.equal(response.status, 200); + const result = await response.json(); + // Fetch supplies connection/host details, so compare only deterministic requested/application headers. + for (const name of Object.keys(result.headers)) if (["host", "connection", "accept", "accept-language", "sec-fetch-mode", "user-agent", "accept-encoding"].includes(name)) delete result.headers[name]; + result.keys = result.keys.filter((name) => Object.hasOwn(result.headers, name)); + if (variant === "erest") cases.push({ variant, result }); + else if (variant === "node-headers") { + assert.equal(result.headers["x-app"], undefined, "Diagnostic must expose its known Web Headers mutation incompatibility"); + cases.push({ variant, expectedIncompatibility: "Misses mutation to Web Headers before dispatch", result }); + } else { + assert.deepEqual(result, cases[0].result); + cases.push({ variant, matchesBaseline: true, result }); + } + assert.equal(result.sameObject, true); + assert.equal(result.prototype, true); + assert.equal(result.headers["x-after"], undefined); + if (variant !== "node-headers") assert.equal(result.headers.__proto__, "special"); + } finally { + server.closeAllConnections(); + await new Promise((accept) => server.close(accept)); + } +} +const output = "benchmarks/results/experiments/headers-check.json"; +writeFileSync(output, `${JSON.stringify({ cases }, null, 2)}\n`); +console.log(`Header checks passed; known Node-only mutation incompatibility reproduced. ${output}`); diff --git a/benchmarks/experiments/prepare.mjs b/benchmarks/experiments/prepare.mjs index 68c5acb..9041b5e 100644 --- a/benchmarks/experiments/prepare.mjs +++ b/benchmarks/experiments/prepare.mjs @@ -23,6 +23,23 @@ function replace(source, before, after) { } const changes = { + foreach: { + frameworks: ["h3"], + description: "Eagerly copy Web Headers with forEach instead of allocating iterator entry pairs; preserve an own __proto__ key.", + caveat: "Requires duplicate headers, special keys, mutation timing and all H3 behavior checks before a production change.", + patch(file, source) { + if (file !== adapterFile("h3")) return source; + source = replace(source, "headers: Object.fromEntries(event.req.headers),", "headers: copyHeaders(event.req.headers),"); + return `function copyHeaders(input) { + const output = {}; + input.forEach((value, key) => { + if (key === "__proto__") Object.defineProperty(output, key, { value, writable: true, enumerable: true, configurable: true }); + else output[key] = value; + }); + return output; + }\n` + source; + }, + }, "node-headers": { frameworks: ["h3"], description: "Node-only diagnostic: copy IncomingMessage headers instead of converting Web Headers.", @@ -134,7 +151,7 @@ const changes = { }; // A combined variant is generated only when explicitly requested after screening. -const definitions = { ...Object.fromEntries(Object.entries(changes).map(([name, change]) => [name, [name]])) }; +const definitions = { control: [], ...Object.fromEntries(Object.keys(changes).map((name) => [name, [name]])) }; if (process.env.BENCH_COMBINE) definitions.combined = process.env.BENCH_COMBINE.split(","); for (const [name, patches] of Object.entries(definitions)) { @@ -157,7 +174,7 @@ for (const [name, patches] of Object.entries(definitions)) { runtimeRoot: relative(root, dir), frameworks: patches.length === 1 ? changes[patches[0]].frameworks : frameworks, patches, - descriptions: patches.map((patch) => changes[patch].description), + descriptions: patches.length ? patches.map((patch) => changes[patch].description) : ["Unchanged compiled runtime snapshot; control for loading an isolated copy."], caveats: patches.map((patch) => changes[patch].caveat), files, }; diff --git a/benchmarks/experiments/report.mjs b/benchmarks/experiments/report.mjs index 712eca1..6da3111 100644 --- a/benchmarks/experiments/report.mjs +++ b/benchmarks/experiments/report.mjs @@ -61,15 +61,20 @@ const stages = inputs.map((input) => { return { input, raw, groups, comparisons }; }); const profilePath = resolve("benchmarks/results/experiments/profiles-summary.json"); +const checksPath = resolve("benchmarks/results/experiments/headers-check.json"); +const findingsPath = resolve("benchmarks/results/experiments/findings.json"); const output = resolve(process.env.EXPERIMENT_OUT || "benchmarks/results/mac-optimization"); const bundle = { generatedAt: new Date().toISOString(), method: "Compare candidate to erest control within the same round, framework, scenario and concurrency. Profile runs are excluded from performance comparisons. Paired ranges are not confidence intervals.", profiles: existsSync(profilePath) ? JSON.parse(readFileSync(profilePath, "utf8")) : null, + headerChecks: existsSync(checksPath) ? JSON.parse(readFileSync(checksPath, "utf8")) : null, + findings: existsSync(findingsPath) ? JSON.parse(readFileSync(findingsPath, "utf8")) : null, stages }; writeFileSync(`${output}.json`, `${JSON.stringify(bundle, null, 2)}\n`); const escape = (value) => String(value).replaceAll("&", "&").replaceAll("<", "<").replaceAll('"', """); const number = (value, digits = 2) => Number(value).toFixed(digits); const signed = (value, digits = 2) => `${value >= 0 ? "+" : ""}${number(value, digits)}`; +const findingsHtml = bundle.findings ? `

    结论与下一步

      ${bundle.findings.items.map((item) => `
    • ${escape(item)}
    • `).join("")}
    ` : ""; const sections = stages.map((stage) => `

    ${escape(stage.input)}

    ${stage.raw.samples.length} 次采样 · ${stage.raw.config.rounds} 轮 · 预热 ${stage.raw.config.warmupMs / 1000}s / 测量 ${stage.raw.config.durationMs / 1000}s · ${escape(stage.raw.environment.node)} · ${escape(stage.raw.environment.cpu)}

    提交 ${escape(stage.raw.commit)};全部 ${stage.raw.samples.reduce((sum, s) => sum + s.requests, 0).toLocaleString("en-US")} 次计时区间请求错误为 0。

    @@ -78,6 +83,6 @@ ${stage.comparisons.map((c) => `${escape(c.framework)}${escape(

    各组指标中位数

    ${stage.groups.map((g) => ``).join("")}
    框架变体req/sCPU μs/请求P95 ms客户端 CPU %RSS MiBGC 后堆 MiB
    ${escape(g.framework)}${escape(g.mode)}${number(g.rps, 0)}${number(g.cpuUs, 3)}${number(g.p95Ms, 3)}${number(g.clientCpu, 1)}${number(g.rssMiB)}${number(g.heapMiB)}
    实验实现和兼容性限制
    ${escape(JSON.stringify(stage.raw.experiments?.variants ?? {}, null, 2))}
    `).join(""); -writeFileSync(`${output}.html`, `erest 优化探索

    erest HTTP 优化探索

    每个候选与同轮 erest 对照比较;正吞吐变化表示更快,负 CPU 变化表示每请求更省 CPU。范围反映轮间波动,并非置信区间。诊断变体可能改变语义,兼容性限制见每轮实验清单。CPU profile 仅用于定位,没有混入收益比较。

    客户端接近一个逻辑核时可能限制吞吐;RSS 为 V8 运行时快照,不能单凭该值推断内存泄漏。结果仅适用于此请求模型。

    ${sections}`); +writeFileSync(`${output}.html`, `erest 优化探索

    erest HTTP 优化探索

    每个候选与同轮 erest 对照比较;正吞吐变化表示更快,负 CPU 变化表示每请求更省 CPU。范围反映轮间波动,并非置信区间。诊断变体可能改变语义,兼容性限制见每轮实验清单。CPU profile 仅用于定位,没有混入收益比较。

    客户端接近一个逻辑核时可能限制吞吐;RSS 为 V8 运行时快照,不能单凭该值推断内存泄漏。结果仅适用于此请求模型。

    ${findingsHtml}${sections}`); console.log(JSON.stringify(stages.map((stage) => ({ input: stage.input, comparisons: stage.comparisons.map(({pairs, ...rest}) => rest) })), null, 2)); console.log(`Saved ${output}.json and ${output}.html`); From a7cfd11fc373ab962627d7e59f6fc04913c73f9a Mon Sep 17 00:00:00 2001 From: yourtion Date: Wed, 28 Oct 2026 00:32:13 +0800 Subject: [PATCH 10/12] bench: record Mac optimization exploration and paired findings --- CONTRIBUTING.md | 2 + benchmarks/experiments/report.mjs | 29 +- benchmarks/experiments/summarize-profiles.mjs | 34 + benchmarks/results/mac-optimization.json | 11404 ++++++++++++++++ 4 files changed, 11462 insertions(+), 7 deletions(-) create mode 100644 benchmarks/experiments/summarize-profiles.mjs create mode 100644 benchmarks/results/mac-optimization.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 24f4006..875cf5c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -98,6 +98,8 @@ node benchmarks/experiments/report.mjs benchmarks/results/experiments/screen.jso 报告按同框架、场景、并发、轮次配对,与 erest 对照比较;轮间范围不是置信区间。 `BENCH_PROFILE_DIR` 可单独采集服务端 CPU profile;开启 profiler 的结果只用于定位,不参与收益比较。 报告脚本可传入多个完整结果文件,将各阶段原始数据和比较合并到 `mac-optimization.json`,并生成 HTML。 +也可只传入合并后的 JSON 重新生成报告,无需保留中间数据文件。 +采集 profile 后运行 `node benchmarks/experiments/summarize-profiles.mjs`,生成带环境、原始 profile 哈希和采样窗口说明的定位摘要。 ## 合约专项 diff --git a/benchmarks/experiments/report.mjs b/benchmarks/experiments/report.mjs index 6da3111..45737eb 100644 --- a/benchmarks/experiments/report.mjs +++ b/benchmarks/experiments/report.mjs @@ -2,9 +2,15 @@ import assert from "node:assert/strict"; import { readFileSync, writeFileSync, existsSync } from "node:fs"; import { resolve } from "node:path"; +import { createHash } from "node:crypto"; const inputs = process.argv.slice(2); assert(inputs.length, "Pass screening and/or confirmation JSON paths"); +const loaded = inputs.map((input) => ({ input, data: JSON.parse(readFileSync(resolve(input), "utf8")) })); +const sourceBundle = loaded.find(({ data }) => Array.isArray(data.stages))?.data; +const runs = loaded.flatMap(({ input, data }) => Array.isArray(data.stages) + ? data.stages.map((stage) => ({ input: stage.input, raw: stage.raw })) + : [{ input, raw: data }]); const median = (values) => { const sorted = values.toSorted((a, b) => a - b); const i = Math.floor(sorted.length / 2); @@ -19,8 +25,7 @@ const metrics = { heapMiB: (s) => s.serverRetainedHeapMiB, clientCpu: (s) => s.clientCpuPercent, }; -const stages = inputs.map((input) => { - const raw = JSON.parse(readFileSync(resolve(input), "utf8")); +const stages = runs.map(({ input, raw }) => { assert(raw.finishedAt, `Incomplete run: ${input}`); assert(raw.samples.every((s) => s.errors === 0), `Errors in ${input}`); const groups = []; @@ -38,6 +43,7 @@ const stages = inputs.map((input) => { for (const group of groups.filter((g) => !["erest", "native-zod"].includes(g.mode))) { const candidates = grouped.get(`${group.framework}/${group.scenario}/${group.concurrency}/${group.mode}`); const baseline = grouped.get(`${group.framework}/${group.scenario}/${group.concurrency}/erest`); + const isolated = grouped.get(`${group.framework}/${group.scenario}/${group.concurrency}/control`); assert(baseline, "No erest control"); const pairs = candidates.map((candidate) => { const control = baseline.find((b) => b.round === candidate.round); @@ -48,11 +54,18 @@ const stages = inputs.map((input) => { rssMiBDelta: candidate.serverRssMiB - control.serverRssMiB, heapMiBDelta: candidate.serverRetainedHeapMiB - control.serverRetainedHeapMiB }; }); + const isolatedGains = isolated && group.mode !== "control" ? candidates.map((candidate) => { + const control = isolated.find((sample) => sample.round === candidate.round); + assert(control, "Unpaired isolated control"); + return (candidate.rps / control.rps - 1) * 100; + }) : null; comparisons.push({ framework: group.framework, scenario: group.scenario, concurrency: group.concurrency, mode: group.mode, + versusIsolatedControl: isolatedGains ? { medianGainPercent: median(isolatedGains), minGainPercent: Math.min(...isolatedGains), maxGainPercent: Math.max(...isolatedGains), values: isolatedGains } : null, medianGainPercent: median(pairs.map((p) => p.throughputPercent)), minGainPercent: Math.min(...pairs.map((p) => p.throughputPercent)), maxGainPercent: Math.max(...pairs.map((p) => p.throughputPercent)), medianCpuUsDelta: median(pairs.map((p) => p.cpuUsDelta)), + medianP95MsDelta: median(pairs.map((p) => p.p95MsDelta)), medianRssMiBDelta: median(pairs.map((p) => p.rssMiBDelta)), medianHeapMiBDelta: median(pairs.map((p) => p.heapMiBDelta)), allRoundsPositive: pairs.every((p) => p.throughputPercent > 0), pairs, @@ -64,11 +77,13 @@ const profilePath = resolve("benchmarks/results/experiments/profiles-summary.jso const checksPath = resolve("benchmarks/results/experiments/headers-check.json"); const findingsPath = resolve("benchmarks/results/experiments/findings.json"); const output = resolve(process.env.EXPERIMENT_OUT || "benchmarks/results/mac-optimization"); +const savedFindings = sourceBundle ? sourceBundle.findings : existsSync(findingsPath) ? JSON.parse(readFileSync(findingsPath, "utf8")) : null; +const inputSha256 = stages.map((stage) => createHash("sha256").update(JSON.stringify(stage.raw)).digest("hex")); const bundle = { generatedAt: new Date().toISOString(), method: "Compare candidate to erest control within the same round, framework, scenario and concurrency. Profile runs are excluded from performance comparisons. Paired ranges are not confidence intervals.", - profiles: existsSync(profilePath) ? JSON.parse(readFileSync(profilePath, "utf8")) : null, - headerChecks: existsSync(checksPath) ? JSON.parse(readFileSync(checksPath, "utf8")) : null, - findings: existsSync(findingsPath) ? JSON.parse(readFileSync(findingsPath, "utf8")) : null, + profiles: sourceBundle ? sourceBundle.profiles : existsSync(profilePath) ? JSON.parse(readFileSync(profilePath, "utf8")) : null, + headerChecks: sourceBundle ? sourceBundle.headerChecks : existsSync(checksPath) ? JSON.parse(readFileSync(checksPath, "utf8")) : null, + findings: savedFindings && JSON.stringify(savedFindings.inputSha256) === JSON.stringify(inputSha256) ? savedFindings : null, stages }; writeFileSync(`${output}.json`, `${JSON.stringify(bundle, null, 2)}\n`); const escape = (value) => String(value).replaceAll("&", "&").replaceAll("<", "<").replaceAll('"', """); @@ -78,8 +93,8 @@ const findingsHtml = bundle.findings ? `

    结论与下一步

      const sections = stages.map((stage) => `

      ${escape(stage.input)}

      ${stage.raw.samples.length} 次采样 · ${stage.raw.config.rounds} 轮 · 预热 ${stage.raw.config.warmupMs / 1000}s / 测量 ${stage.raw.config.durationMs / 1000}s · ${escape(stage.raw.environment.node)} · ${escape(stage.raw.environment.cpu)}

      提交 ${escape(stage.raw.commit)};全部 ${stage.raw.samples.reduce((sum, s) => sum + s.requests, 0).toLocaleString("en-US")} 次计时区间请求错误为 0。

      -
      -${stage.comparisons.map((c) => ``).join("")} +
      框架变体吞吐配对中位变化轮间范围CPU μs/请求变化RSS MiB 变化GC 后堆 MiB 变化
      ${escape(c.framework)}${escape(c.mode)}${signed(c.medianGainPercent)}%${signed(c.minGainPercent)}% ~ ${signed(c.maxGainPercent)}%${signed(c.medianCpuUsDelta, 3)}${signed(c.medianRssMiBDelta)}${signed(c.medianHeapMiBDelta, 3)}
      +${stage.comparisons.map((c) => ``).join("")}
      框架变体吞吐配对中位变化轮间范围CPU μs/请求变化P95 ms 变化RSS MiB 变化GC 后堆 MiB 变化
      ${escape(c.framework)}${escape(c.mode)}${signed(c.medianGainPercent)}%${signed(c.minGainPercent)}% ~ ${signed(c.maxGainPercent)}%${signed(c.medianCpuUsDelta, 3)}${signed(c.medianP95MsDelta, 3)}${signed(c.medianRssMiBDelta)}${signed(c.medianHeapMiBDelta, 3)}

      各组指标中位数

      ${stage.groups.map((g) => ``).join("")}
      框架变体req/sCPU μs/请求P95 ms客户端 CPU %RSS MiBGC 后堆 MiB
      ${escape(g.framework)}${escape(g.mode)}${number(g.rps, 0)}${number(g.cpuUs, 3)}${number(g.p95Ms, 3)}${number(g.clientCpu, 1)}${number(g.rssMiB)}${number(g.heapMiB)}
      实验实现和兼容性限制
      ${escape(JSON.stringify(stage.raw.experiments?.variants ?? {}, null, 2))}
      `).join(""); diff --git a/benchmarks/experiments/summarize-profiles.mjs b/benchmarks/experiments/summarize-profiles.mjs new file mode 100644 index 0000000..3d7d8d3 --- /dev/null +++ b/benchmarks/experiments/summarize-profiles.mjs @@ -0,0 +1,34 @@ +import { readFileSync, readdirSync, writeFileSync } from "node:fs"; +import { resolve, relative } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createHash } from "node:crypto"; + +const directory = resolve(process.argv[2] || "benchmarks/results/experiments/profiles"); +const runPath = resolve(process.argv[3] || "benchmarks/results/experiments/profile-run.json"); +const source = readFileSync(runPath); +const run = JSON.parse(source); +const sha256 = (value) => createHash("sha256").update(value).digest("hex"); +const profiles = readdirSync(directory).filter((name) => name.endsWith(".cpuprofile")).map((file) => { + const source = readFileSync(resolve(directory, file)); + const profile = JSON.parse(source); + const nodes = new Map(profile.nodes.map((node) => [node.id, node.callFrame])); + const cutoff = Math.max(0, profile.timeDeltas.reduce((sum, delta) => sum + delta, 0) - run.config.durationMs * 1000); + const counts = new Map(); + let elapsed = 0, total = 0; + for (let i = 0; i < profile.samples.length; i++) { + const delta = profile.timeDeltas[i]; + elapsed += delta; + if (elapsed < cutoff) continue; + total += delta; + const frame = nodes.get(profile.samples[i]); + const location = frame.url.startsWith("file:") ? relative(process.cwd(), fileURLToPath(frame.url)) : frame.url; + const key = JSON.stringify({ function: frame.functionName || "(anonymous)", source: location, line: frame.lineNumber + 1 }); + counts.set(key, (counts.get(key) || 0) + delta); + } + return { file, sha256: sha256(source), frames: [...counts].sort((a, b) => b[1] - a[1]).slice(0, 25).map(([key, duration]) => ({ ...JSON.parse(key), percent: duration / total * 100 })) }; +}); +const summary = { commit: run.commit, environment: run.environment, config: run.config, profileRunSha256: sha256(source), summarizerSha256: sha256(readFileSync(fileURLToPath(import.meta.url))), + window: `Last ${run.config.durationMs}ms of each profile, including stop/forced GC/exit. Sampled self time is approximate and cannot isolate allocations or prove causality. Profile timings are excluded from optimization comparisons.`, profiles }; +const output = resolve(directory, "../profiles-summary.json"); +writeFileSync(output, `${JSON.stringify(summary, null, 2)}\n`); +console.log(output); diff --git a/benchmarks/results/mac-optimization.json b/benchmarks/results/mac-optimization.json new file mode 100644 index 0000000..ff30eac --- /dev/null +++ b/benchmarks/results/mac-optimization.json @@ -0,0 +1,11404 @@ +{ + "generatedAt": "2026-10-27T16:31:24.652Z", + "method": "Compare candidate to erest control within the same round, framework, scenario and concurrency. Profile runs are excluded from performance comparisons. Paired ranges are not confidence intervals.", + "profiles": { + "commit": "0d555732d1f5cac95f54a2281c4bcbd1121e0e24", + "environment": { + "node": "v24.22.1", + "os": "Darwin 27.2.0 arm64", + "platform": "darwin", + "cpu": "Apple M2", + "logicalCpus": 8, + "availableParallelism": 8, + "systemMemoryBytes": 17179869184, + "cpuMax": null, + "memoryMax": null, + "versions": { + "erest": "3.4.0", + "packages/erest-express/": "3.4.0", + "packages/erest-koa/": "3.4.0", + "packages/erest-leizmweb/": "3.4.0", + "node_modules/express/": "5.2.1", + "node_modules/koa/": "3.0.0", + "node_modules/koa-router/": "13.1.1", + "node_modules/koa-bodyparser/": "4.4.1", + "node_modules/@leizm/web/": "2.7.3", + "node_modules/zod/": "4.4.3", + "packages/erest-h3/": "3.4.0", + "node_modules/h3/": "2.0.8" + } + }, + "config": { + "frameworks": [ + "express", + "leizmweb", + "h3" + ], + "scenarios": [ + "post" + ], + "concurrency": [ + 50 + ], + "rounds": 1, + "durationMs": 2000, + "warmupMs": 1000, + "serverCpu": null + }, + "profileRunSha256": "238a4f22071e347209529a1817e8e3f03fd56fe99d40da62361d0653c914ad79", + "summarizerSha256": "11990c084c53ecf47bc1b16c848da3c4d1a69c84cdaed0322bf6342645d28b9e", + "window": "Last 2000ms of each profile, including stop/forced GC/exit. Sampled self time is approximate and cannot isolate allocations or prove causality. Profile timings are excluded from optimization comparisons.", + "profiles": [ + { + "file": "express-post-c50-erest-r1.cpuprofile", + "sha256": "8a9c801ca63a9d21b9446c589999a9b94218309d9a7a651ff2f8a2c96c7d579b", + "frames": [ + { + "function": "writev", + "source": "", + "line": 0, + "percent": 11.449891013635666 + }, + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 9.065436302830648 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 7.118376535518159 + }, + { + "function": "handle", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/application.js", + "line": 152, + "percent": 6.887308449154775 + }, + { + "function": "stringify", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 1029, + "percent": 2.9448060662495146 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", + "line": 106, + "percent": 2.9115178669161783 + }, + { + "function": "Hash", + "source": "node:internal/crypto/hash", + "line": 112, + "percent": 2.1220977163595505 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/body-parser@2.3.0_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", + "line": 76, + "percent": 1.9243678116107839 + }, + { + "function": "runChecks", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 33, + "percent": 1.8826326067409103 + }, + { + "function": "setCharset", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/utils.js", + "line": 225, + "percent": 1.7514791006588166 + }, + { + "function": "setHeader", + "source": "node:_http_outgoing", + "line": 700, + "percent": 1.486922885836971 + }, + { + "function": "match", + "source": "node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js", + "line": 233, + "percent": 1.1807814129890954 + }, + { + "function": "json", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 239, + "percent": 1.143294702028131 + }, + { + "function": "getHeader", + "source": "node:_http_outgoing", + "line": 801, + "percent": 1.1246513111102114 + }, + { + "function": "mimeMatch", + "source": "node_modules/.pnpm/type-is@2.1.0/node_modules/type-is/index.js", + "line": 194, + "percent": 1.0663219888549509 + }, + { + "function": "digest", + "source": "node:internal/crypto/hash", + "line": 204, + "percent": 1.0495779246257202 + }, + { + "function": "header", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 672, + "percent": 1.0080926311622531 + }, + { + "function": "send", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 125, + "percent": 0.9913485669330223 + }, + { + "function": "(anonymous)", + "source": "node_modules/.pnpm/router@2.2.0_supports-color@7.2.0/node_modules/router/index.js", + "line": 682, + "percent": 0.9392670298379224 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 0.9059288482233049 + }, + { + "function": "addKeyVal", + "source": "node:querystring", + "line": 286, + "percent": 0.8600950962883658 + }, + { + "function": "writevGeneric", + "source": "node:internal/stream_base_commons", + "line": 72, + "percent": 0.8580958050371142 + }, + { + "function": "inst._zod.run", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 92, + "percent": 0.8495988172192958 + }, + { + "function": "format", + "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", + "line": 65, + "percent": 0.8309054440200948 + }, + { + "function": "_storeHeader", + "source": "node:_http_outgoing", + "line": 456, + "percent": 0.749784201500568 + } + ] + }, + { + "file": "express-post-c50-native-r1.cpuprofile", + "sha256": "b7dc664f9eba1608f358de2a301b13075ca198165b344341fb4ce1328636dc29", + "frames": [ + { + "function": "writev", + "source": "", + "line": 0, + "percent": 24.03045166605346 + }, + { + "function": "handle", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/application.js", + "line": 152, + "percent": 10.01266736518804 + }, + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 7.931700206357077 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 5.1301329323500715 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/body-parser@2.3.0_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", + "line": 76, + "percent": 2.4453913585974116 + }, + { + "function": "Hash", + "source": "node:internal/crypto/hash", + "line": 112, + "percent": 2.178846799865628 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", + "line": 106, + "percent": 2.1639998880232914 + }, + { + "function": "digest", + "source": "node:internal/crypto/hash", + "line": 204, + "percent": 2.111910722569706 + }, + { + "function": "writevGeneric", + "source": "node:internal/stream_base_commons", + "line": 72, + "percent": 1.9060035512613376 + }, + { + "function": "setHeader", + "source": "node:_http_outgoing", + "line": 700, + "percent": 1.8830083342664727 + }, + { + "function": "writeHead", + "source": "node:_http_server", + "line": 408, + "percent": 1.7579343496552717 + }, + { + "function": "_storeHeader", + "source": "node:_http_outgoing", + "line": 456, + "percent": 1.5184341656935358 + }, + { + "function": "match", + "source": "node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js", + "line": 233, + "percent": 1.470594116423784 + }, + { + "function": "stringify", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 1029, + "percent": 1.4642954265512773 + }, + { + "function": "_send", + "source": "node:_http_outgoing", + "line": 400, + "percent": 1.1476612864524178 + }, + { + "function": "update", + "source": "node:internal/crypto/hash", + "line": 186, + "percent": 1.1247660486618782 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 1.0163885911730361 + }, + { + "function": "output", + "source": "benchmarks/fixture.mjs", + "line": 22, + "percent": 0.9726976788827923 + }, + { + "function": "getHeader", + "source": "node:_http_outgoing", + "line": 801, + "percent": 0.9519519939852511 + }, + { + "function": "nextTick", + "source": "node:internal/process/task_queues", + "line": 113, + "percent": 0.9038619967046854 + }, + { + "function": "clearBuffer", + "source": "node:internal/streams/writable", + "line": 746, + "percent": 0.8456740997872442 + }, + { + "function": "RegExp: [^\\t\\x20-\\x7e\\x80-\\xff]", + "source": "", + "line": 0, + "percent": 0.8206792987058691 + }, + { + "function": "fastparse", + "source": "node_modules/.pnpm/parseurl@1.3.3/node_modules/parseurl/index.js", + "line": 95, + "percent": 0.7560927327115959 + }, + { + "function": "decodeParam", + "source": "node_modules/.pnpm/router@2.2.0_supports-color@7.2.0/node_modules/router/lib/layer.js", + "line": 219, + "percent": 0.6790087661766353 + }, + { + "function": "json", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 239, + "percent": 0.664461791947275 + } + ] + }, + { + "file": "express-post-c50-native-zod-r1.cpuprofile", + "sha256": "7fb140a26adf5f4f07555bdfbeb4a86f85e89870c5c9bc741b814956eab34d2b", + "frames": [ + { + "function": "writev", + "source": "", + "line": 0, + "percent": 10.689836966706228 + }, + { + "function": "handle", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/application.js", + "line": 152, + "percent": 10.14034605534387 + }, + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 6.750452870260479 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 5.821775251421076 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", + "line": 106, + "percent": 4.984746080329814 + }, + { + "function": "Hash", + "source": "node:internal/crypto/hash", + "line": 112, + "percent": 2.694284464988444 + }, + { + "function": "stringify", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 1029, + "percent": 1.9530514085826722 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/body-parser@2.3.0_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", + "line": 76, + "percent": 1.865650571553501 + }, + { + "function": "setHeader", + "source": "node:_http_outgoing", + "line": 700, + "percent": 1.7426697482665998 + }, + { + "function": "_storeHeader", + "source": "node:_http_outgoing", + "line": 456, + "percent": 1.6365294521831468 + }, + { + "function": "digest", + "source": "node:internal/crypto/hash", + "line": 204, + "percent": 1.5178961833968392 + }, + { + "function": "setCharset", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/utils.js", + "line": 225, + "percent": 1.4428883752889 + }, + { + "function": "format", + "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", + "line": 65, + "percent": 1.2908239115497533 + }, + { + "function": "writeHead", + "source": "node:_http_server", + "line": 408, + "percent": 1.2637891186207757 + }, + { + "function": "contentType", + "source": "node_modules/.pnpm/mime-types@3.0.1/node_modules/mime-types/index.js", + "line": 79, + "percent": 1.2533449934411893 + }, + { + "function": "update", + "source": "node:internal/crypto/hash", + "line": 186, + "percent": 1.2493972140670873 + }, + { + "function": "match", + "source": "node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js", + "line": 233, + "percent": 1.0805921669061154 + }, + { + "function": "mimeMatch", + "source": "node_modules/.pnpm/type-is@2.1.0/node_modules/type-is/index.js", + "line": 194, + "percent": 0.9682053844712349 + }, + { + "function": "handleRequest", + "source": "node_modules/.pnpm/router@2.2.0_supports-color@7.2.0/node_modules/router/lib/layer.js", + "line": 142, + "percent": 0.94936598163533 + }, + { + "function": "runChecks", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 33, + "percent": 0.8808045474420638 + }, + { + "function": "header", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 672, + "percent": 0.8474732962708476 + }, + { + "function": "readStream", + "source": "node_modules/.pnpm/raw-body@3.0.2/node_modules/raw-body/index.js", + "line": 155, + "percent": 0.8474233243800363 + }, + { + "function": "json", + "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", + "line": 239, + "percent": 0.8412767818102317 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 0.8411268661377974 + }, + { + "function": "addKeyVal", + "source": "node:querystring", + "line": 286, + "percent": 0.7744643637953651 + } + ] + }, + { + "file": "h3-post-c50-erest-r1.cpuprofile", + "sha256": "c9bcb9e78a6c05645884c8b634833c3b858659f41f19ec5a8a279a4521f196bd", + "frames": [ + { + "function": "writev", + "source": "", + "line": 0, + "percent": 21.958631026729954 + }, + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 14.813739695228579 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 8.483387459405446 + }, + { + "function": "readBody", + "source": "node_modules/.pnpm/h3@2.0.8/node_modules/h3/dist/h3.mjs", + "line": 220, + "percent": 3.8366724956282785 + }, + { + "function": "(anonymous)", + "source": "packages/erest-h3/dist/index.js", + "line": 49, + "percent": 3.133200099925056 + }, + { + "function": "json", + "source": "packages/erest-h3/dist/index.js", + "line": 113, + "percent": 2.508418685985511 + }, + { + "function": "splitPath", + "source": "node_modules/.pnpm/rou3@1.0.0/node_modules/rou3/dist/index.mjs", + "line": 44, + "percent": 1.9880589557831625 + }, + { + "function": "runMicrotasks", + "source": "", + "line": 0, + "percent": 1.782063452410692 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 1.6655008743442417 + }, + { + "function": "nextTick", + "source": "node:internal/process/task_queues", + "line": 113, + "percent": 1.3927054708968274 + }, + { + "function": "get _headers", + "source": "node_modules/.pnpm/srvx@1.0.8/node_modules/srvx/dist/adapters/node.mjs", + "line": 273, + "percent": 1.3426929802648015 + }, + { + "function": "processTicksAndRejections", + "source": "node:internal/process/task_queues", + "line": 72, + "percent": 1.2136397701723707 + }, + { + "function": "runChecks", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 33, + "percent": 1.2033474893829628 + }, + { + "function": "end", + "source": "node:_http_outgoing", + "line": 1173, + "percent": 1.0409193105171122 + }, + { + "function": "appendHeader", + "source": "node:internal/deps/undici/undici", + "line": 11213, + "percent": 1.034624031976018 + }, + { + "function": "parserOnIncoming", + "source": "node:_http_server", + "line": 1167, + "percent": 0.9847114664001998 + }, + { + "function": "toSortedArray", + "source": "node:internal/deps/undici/undici", + "line": 11388, + "percent": 0.9597302023482388 + }, + { + "function": "Readable.read", + "source": "node:internal/streams/readable", + "line": 657, + "percent": 0.959630277292031 + }, + { + "function": "(anonymous)", + "source": "", + "line": 1, + "percent": 0.8035973020234825 + }, + { + "function": "isValidHeaderValue", + "source": "node:internal/deps/undici/undici", + "line": 5559, + "percent": 0.7972520609542844 + }, + { + "function": "getLibuvNow", + "source": "", + "line": 0, + "percent": 0.7369972520609543 + }, + { + "function": "Readable.on", + "source": "node:internal/streams/readable", + "line": 1153, + "percent": 0.7369472895328504 + }, + { + "function": "checker", + "source": "packages/erest-h3/dist/index.js", + "line": 11, + "percent": 0.7368973270047464 + }, + { + "function": "next", + "source": "node:internal/deps/undici/undici", + "line": 5865, + "percent": 0.7286035473394954 + }, + { + "function": "_addListener", + "source": "node:events", + "line": 545, + "percent": 0.722408193854609 + } + ] + }, + { + "file": "h3-post-c50-native-r1.cpuprofile", + "sha256": "ca9b187834af32fab29e01acbe3d2a25dd54c3f55e51c002e5019b14d9849923", + "frames": [ + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 18.196762702331103 + }, + { + "function": "writev", + "source": "", + "line": 0, + "percent": 15.58032622961065 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 10.53884132241735 + }, + { + "function": "readBody", + "source": "node_modules/.pnpm/h3@2.0.8/node_modules/h3/dist/h3.mjs", + "line": 220, + "percent": 8.241234922817323 + }, + { + "function": "send", + "source": "benchmarks/server.mjs", + "line": 97, + "percent": 3.839410036872695 + }, + { + "function": "runMicrotasks", + "source": "", + "line": 0, + "percent": 3.347640772451722 + }, + { + "function": "splitPath", + "source": "node_modules/.pnpm/rou3@1.0.0/node_modules/rou3/dist/index.mjs", + "line": 44, + "percent": 1.9456783951003063 + }, + { + "function": "Readable.read", + "source": "node:internal/streams/readable", + "line": 657, + "percent": 1.4958065120929942 + }, + { + "function": "nextTick", + "source": "node:internal/process/task_queues", + "line": 113, + "percent": 1.4957065183426035 + }, + { + "function": "output", + "source": "benchmarks/fixture.mjs", + "line": 22, + "percent": 1.489456908943191 + }, + { + "function": "processTicksAndRejections", + "source": "node:internal/process/task_queues", + "line": 72, + "percent": 1.3791638022623585 + }, + { + "function": "onEnd", + "source": "node_modules/.pnpm/srvx@1.0.8/node_modules/srvx/dist/adapters/node.mjs", + "line": 580, + "percent": 1.2290231860508718 + }, + { + "function": "(anonymous)", + "source": "benchmarks/server.mjs", + "line": 107, + "percent": 1.1290794325354665 + }, + { + "function": "writevGeneric", + "source": "node:internal/stream_base_commons", + "line": 72, + "percent": 0.9374414099118804 + }, + { + "function": "utf8Slice", + "source": "", + "line": 0, + "percent": 0.9270920567464533 + }, + { + "function": "_addHeaderLine", + "source": "node:_http_incoming", + "line": 453, + "percent": 0.8852946690831822 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 0.8561464908443223 + }, + { + "function": "parserOnIncoming", + "source": "node:_http_server", + "line": 1167, + "percent": 0.8331979251296794 + }, + { + "function": "Readable.on", + "source": "node:internal/streams/readable", + "line": 1153, + "percent": 0.7541528654459095 + }, + { + "function": "parserOnHeadersComplete", + "source": "node:_http_common", + "line": 77, + "percent": 0.7374039122554841 + }, + { + "function": "resOnFinish", + "source": "node:_http_server", + "line": 1096, + "percent": 0.735404037247672 + }, + { + "function": "(anonymous)", + "source": "", + "line": 0, + "percent": 0.6624085994625336 + }, + { + "function": "onParserExecute", + "source": "node:_http_server", + "line": 963, + "percent": 0.6250109368164489 + }, + { + "function": "fromList", + "source": "node:internal/streams/readable", + "line": 1648, + "percent": 0.6082619836260234 + }, + { + "function": "end", + "source": "node:_http_outgoing", + "line": 1173, + "percent": 0.5979126304605963 + } + ] + }, + { + "file": "h3-post-c50-native-zod-r1.cpuprofile", + "sha256": "a7977d5a8fb035c5dba1b491c63441c6d212200c22327b84d2dc8fdad6b93244", + "frames": [ + { + "function": "writev", + "source": "", + "line": 0, + "percent": 21.614899256866625 + }, + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 14.239449200558038 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 12.198644095246236 + }, + { + "function": "readBody", + "source": "node_modules/.pnpm/h3@2.0.8/node_modules/h3/dist/h3.mjs", + "line": 220, + "percent": 6.699896980030322 + }, + { + "function": "send", + "source": "benchmarks/server.mjs", + "line": 97, + "percent": 2.33896819077239 + }, + { + "function": "runChecks", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 33, + "percent": 1.999467155324223 + }, + { + "function": "runMicrotasks", + "source": "", + "line": 0, + "percent": 1.6557673438192766 + }, + { + "function": "nextTick", + "source": "node:internal/process/task_queues", + "line": 113, + "percent": 1.6306746583370946 + }, + { + "function": "splitPath", + "source": "node_modules/.pnpm/rou3@1.0.0/node_modules/rou3/dist/index.mjs", + "line": 44, + "percent": 1.5849879760049943 + }, + { + "function": "Readable.read", + "source": "node:internal/streams/readable", + "line": 657, + "percent": 1.3412090375655497 + }, + { + "function": "(anonymous)", + "source": "benchmarks/server.mjs", + "line": 107, + "percent": 1.2830259979216059 + }, + { + "function": "processTicksAndRejections", + "source": "node:internal/process/task_queues", + "line": 72, + "percent": 1.276627862977942 + }, + { + "function": "utf8Slice", + "source": "", + "line": 0, + "percent": 1.126721560665066 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 1.0663891475634852 + }, + { + "function": "(anonymous)", + "source": "", + "line": 1, + "percent": 1.0476446115957199 + }, + { + "function": "parserOnIncoming", + "source": "node:_http_server", + "line": 1167, + "percent": 0.9330280223314903 + }, + { + "function": "writevGeneric", + "source": "node:internal/stream_base_commons", + "line": 72, + "percent": 0.8268589706100671 + }, + { + "function": "inst._zod.run", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 92, + "percent": 0.8205608065248979 + }, + { + "function": "write_", + "source": "node:_http_outgoing", + "line": 959, + "percent": 0.7497814387106159 + }, + { + "function": "_addHeaderLine", + "source": "node:_http_incoming", + "line": 453, + "percent": 0.7143417693742274 + }, + { + "function": "resOnFinish", + "source": "node:_http_server", + "line": 1096, + "percent": 0.676902682867944 + }, + { + "function": "inst._zod.parse", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 490, + "percent": 0.676902682867944 + }, + { + "function": "Readable.on", + "source": "node:internal/streams/readable", + "line": 1153, + "percent": 0.6581081614709312 + }, + { + "function": "set", + "source": "node:internal/deps/undici/undici", + "line": 11521, + "percent": 0.6061233150536619 + }, + { + "function": "emit", + "source": "node:events", + "line": 489, + "percent": 0.59987513639774 + } + ] + }, + { + "file": "leizmweb-post-c50-erest-r1.cpuprofile", + "sha256": "c900fc6dd6595f531a2ab0685dba1de2f60e04fcde701ff6cbd0e1a237fa639e", + "frames": [ + { + "function": "writeUtf8String", + "source": "", + "line": 0, + "percent": 24.76300231235548 + }, + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 7.589125679645021 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 6.235060308730704 + }, + { + "function": "json", + "source": "node_modules/.pnpm/@leizm+web@2.7.3_@types+express@5.0.6_supports-color@7.2.0/node_modules/@leizm/web/dist/lib/response.js", + "line": 183, + "percent": 4.028998187613274 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/body-parser@1.20.3_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", + "line": 74, + "percent": 3.5956252734204117 + }, + { + "function": "parse", + "source": "", + "line": 0, + "percent": 3.33319167552028 + }, + { + "function": "_storeHeader", + "source": "node:_http_outgoing", + "line": 456, + "percent": 2.0623211049309416 + }, + { + "function": "parseQueryStringValues", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", + "line": 60, + "percent": 2.029073182926067 + }, + { + "function": "module.exports", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", + "line": 304, + "percent": 1.781138678832573 + }, + { + "function": "runChecks", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 33, + "percent": 1.5498531341791137 + }, + { + "function": "checker", + "source": "packages/erest-leizmweb/dist/index.js", + "line": 18, + "percent": 1.3791638022623585 + }, + { + "function": "(anonymous)", + "source": "", + "line": 1, + "percent": 1.2499718767577026 + }, + { + "function": "decode", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/utils.js", + "line": 114, + "percent": 1.1624273482907317 + }, + { + "function": "parseUrl", + "source": "node_modules/.pnpm/@leizm+web@2.7.3_@types+express@5.0.6_supports-color@7.2.0/node_modules/@leizm/web/dist/lib/parse_url.js", + "line": 10, + "percent": 1.102031123054809 + }, + { + "function": "mimeMatch", + "source": "node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js", + "line": 195, + "percent": 1.0978313855384039 + }, + { + "function": "inst._zod.run", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 92, + "percent": 1.0790825573401661 + }, + { + "function": "processTicksAndRejections", + "source": "node:internal/process/task_queues", + "line": 72, + "percent": 0.9937378913817886 + }, + { + "function": "_addListener", + "source": "node:events", + "line": 545, + "percent": 0.968839447534529 + }, + { + "function": "decode", + "source": "", + "line": 0, + "percent": 0.9353915380288732 + }, + { + "function": "(anonymous)", + "source": "", + "line": 0, + "percent": 0.9227923254796575 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 0.8561464908443223 + }, + { + "function": "setHeader", + "source": "node:_http_outgoing", + "line": 700, + "percent": 0.8166489594400349 + }, + { + "function": "_addHeaderLine", + "source": "node:_http_incoming", + "line": 453, + "percent": 0.8103493531654271 + }, + { + "function": "writeHead", + "source": "node:_http_server", + "line": 408, + "percent": 0.7749015686519592 + }, + { + "function": "nextTick", + "source": "node:internal/process/task_queues", + "line": 113, + "percent": 0.7644522217361416 + } + ] + }, + { + "file": "leizmweb-post-c50-native-r1.cpuprofile", + "sha256": "a4726aec78827a10bcea2d9b104bd7bdfb4fa96e5d12da22eb8509cfca9f695e", + "frames": [ + { + "function": "writeUtf8String", + "source": "", + "line": 0, + "percent": 18.533328401642255 + }, + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 12.802136888416157 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 8.82836015606803 + }, + { + "function": "parseQueryStringValues", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", + "line": 60, + "percent": 6.985023987012324 + }, + { + "function": "module.exports", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", + "line": 304, + "percent": 4.077692128521202 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/body-parser@1.20.3_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", + "line": 74, + "percent": 3.5675620018533825 + }, + { + "function": "decode", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/utils.js", + "line": 114, + "percent": 2.040820406804534 + }, + { + "function": "json", + "source": "node_modules/.pnpm/@leizm+web@2.7.3_@types+express@5.0.6_supports-color@7.2.0/node_modules/@leizm/web/dist/lib/response.js", + "line": 183, + "percent": 1.9430029800076576 + }, + { + "function": "parse", + "source": "", + "line": 0, + "percent": 1.5745256829475787 + }, + { + "function": "mimeMatch", + "source": "node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js", + "line": 195, + "percent": 1.5535826569752271 + }, + { + "function": "nextTick", + "source": "node:internal/process/task_queues", + "line": 113, + "percent": 1.5057985690764977 + }, + { + "function": "processTicksAndRejections", + "source": "node:internal/process/task_queues", + "line": 72, + "percent": 1.505748585720955 + }, + { + "function": "_addListener", + "source": "node:events", + "line": 545, + "percent": 1.120476881198561 + }, + { + "function": "decode", + "source": "", + "line": 0, + "percent": 1.0579477034147629 + }, + { + "function": "setHeader", + "source": "node:_http_outgoing", + "line": 700, + "percent": 1.0538490682602693 + }, + { + "function": "_storeHeader", + "source": "node:_http_outgoing", + "line": 456, + "percent": 1.0288074071334246 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 0.9830226534563989 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/media-typer@0.3.0/node_modules/media-typer/index.js", + "line": 139, + "percent": 0.835221871116918 + }, + { + "function": "readStream", + "source": "node_modules/.pnpm/raw-body@2.5.2/node_modules/raw-body/index.js", + "line": 155, + "percent": 0.8247253664529712 + }, + { + "function": "resOnFinish", + "source": "node:_http_server", + "line": 1096, + "percent": 0.7830892312859817 + }, + { + "function": "parserOnIncoming", + "source": "node:_http_server", + "line": 1167, + "percent": 0.6497836220538561 + }, + { + "function": "output", + "source": "benchmarks/fixture.mjs", + "line": 22, + "percent": 0.6059982025985347 + }, + { + "function": "Readable.on", + "source": "node:internal/streams/readable", + "line": 1153, + "percent": 0.597750948934005 + }, + { + "function": "addListener", + "source": "node:events", + "line": 615, + "percent": 0.5810565081827751 + }, + { + "function": "parserOnHeadersComplete", + "source": "node:_http_common", + "line": 77, + "percent": 0.576907889672739 + } + ] + }, + { + "file": "leizmweb-post-c50-native-zod-r1.cpuprofile", + "sha256": "70b1f6fdfe3ccd1a898d994aa819e35d71c62abc91c528f497f4c5030fe384a8", + "frames": [ + { + "function": "writeUtf8String", + "source": "", + "line": 0, + "percent": 25.685896314803248 + }, + { + "function": "(idle)", + "source": "", + "line": 0, + "percent": 8.88369768894441 + }, + { + "function": "(program)", + "source": "", + "line": 0, + "percent": 7.047545284197376 + }, + { + "function": "parseQueryStringValues", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", + "line": 60, + "percent": 6.215015615240475 + }, + { + "function": "module.exports", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", + "line": 304, + "percent": 3.895565271705184 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/body-parser@1.20.3_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", + "line": 74, + "percent": 3.0127170518425985 + }, + { + "function": "json", + "source": "node_modules/.pnpm/@leizm+web@2.7.3_@types+express@5.0.6_supports-color@7.2.0/node_modules/@leizm/web/dist/lib/response.js", + "line": 183, + "percent": 2.3361898813241724 + }, + { + "function": "decode", + "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/utils.js", + "line": 114, + "percent": 1.6594128669581512 + }, + { + "function": "(garbage collector)", + "source": "", + "line": 0, + "percent": 1.3949281698938163 + }, + { + "function": "nextTick", + "source": "node:internal/process/task_queues", + "line": 113, + "percent": 1.257464084946908 + }, + { + "function": "parse", + "source": "", + "line": 0, + "percent": 1.2409743910056215 + }, + { + "function": "_storeHeader", + "source": "node:_http_outgoing", + "line": 456, + "percent": 1.0410493441599 + }, + { + "function": "runChecks", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 33, + "percent": 1.005571517801374 + }, + { + "function": "decode", + "source": "", + "line": 0, + "percent": 0.982735790131168 + }, + { + "function": "validate", + "source": "benchmarks/fixture.mjs", + "line": 28, + "percent": 0.9306183635227983 + }, + { + "function": "readStream", + "source": "node_modules/.pnpm/raw-body@2.5.2/node_modules/raw-body/index.js", + "line": 155, + "percent": 0.8994378513429108 + }, + { + "function": "inst._zod.run", + "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", + "line": 92, + "percent": 0.8411742660836977 + }, + { + "function": "mimeMatch", + "source": "node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js", + "line": 195, + "percent": 0.8077951280449719 + }, + { + "function": "doWrite", + "source": "node:internal/streams/writable", + "line": 589, + "percent": 0.7682698313554029 + }, + { + "function": "writeHead", + "source": "node:_http_server", + "line": 408, + "percent": 0.7369893816364772 + }, + { + "function": "removeListener", + "source": "node:events", + "line": 680, + "percent": 0.7286445971267957 + }, + { + "function": "setHeader", + "source": "node:_http_outgoing", + "line": 700, + "percent": 0.7266958151155528 + }, + { + "function": "(anonymous)", + "source": "", + "line": 1, + "percent": 0.7058588382261086 + }, + { + "function": "Readable.read", + "source": "node:internal/streams/readable", + "line": 657, + "percent": 0.6766770768269832 + }, + { + "function": "parse", + "source": "node_modules/.pnpm/media-typer@0.3.0/node_modules/media-typer/index.js", + "line": 139, + "percent": 0.6682823235477826 + } + ] + } + ] + }, + "headerChecks": { + "cases": [ + { + "variant": "erest", + "result": { + "headers": { + "__proto__": "special", + "cookie": "a=1; b=2", + "set-cookie": "a=1, b=2", + "x-app": "updated-before-dispatch", + "x-duplicate": "a, b" + }, + "keys": [ + "__proto__", + "cookie", + "set-cookie", + "x-app", + "x-duplicate" + ], + "sameObject": true, + "prototype": true + } + }, + { + "variant": "control", + "matchesBaseline": true, + "result": { + "headers": { + "__proto__": "special", + "cookie": "a=1; b=2", + "set-cookie": "a=1, b=2", + "x-app": "updated-before-dispatch", + "x-duplicate": "a, b" + }, + "keys": [ + "__proto__", + "cookie", + "set-cookie", + "x-app", + "x-duplicate" + ], + "sameObject": true, + "prototype": true + } + }, + { + "variant": "foreach", + "matchesBaseline": true, + "result": { + "headers": { + "__proto__": "special", + "cookie": "a=1; b=2", + "set-cookie": "a=1, b=2", + "x-app": "updated-before-dispatch", + "x-duplicate": "a, b" + }, + "keys": [ + "__proto__", + "cookie", + "set-cookie", + "x-app", + "x-duplicate" + ], + "sameObject": true, + "prototype": true + } + }, + { + "variant": "node-headers", + "expectedIncompatibility": "Misses mutation to Web Headers before dispatch", + "result": { + "headers": { + "x-duplicate": "a, b", + "set-cookie": [ + "a=1, b=2" + ], + "cookie": "a=1; b=2" + }, + "keys": [ + "x-duplicate", + "set-cookie", + "cookie" + ], + "sameObject": true, + "prototype": true + } + } + ] + }, + "findings": { + "scope": "Apple M2, Node.js 24.22.1, POST with params/query/nested body, concurrency 50. 60 + 39 screening samples and 35 H3 confirmation samples; 9 profiling processes excluded from gain comparisons.", + "productionRuntimeChanged": false, + "items": [ + "共完成 134 次非 profiler 性能采样,计时区间 HTTP/网络错误均为 0。初筛为 3 轮、预热 2s/测量 3s;H3 复核为 7 轮、预热 3s/测量 5s。所有收益均按同框架、场景、并发和轮次配对,不直接比较不同阶段的绝对吞吐。", + "最值得继续调查的是 H3 headers 转换。Node 原始 headers 复制的 7 轮吞吐配对中位变化为 +7.12%(+5.26% ~ +7.58%),CPU 约减少 1.624 μs/请求;相对未改动副本为 +6.98%。但 P95 增加约 0.584ms,且真实 HTTP 检查证明它会漏掉路由前对 Web Headers 的修改,因此不能直接替换现有实现。重复头/数组规范化和跨运行时行为也需保留。", + "保持 Web Headers 路径的 forEach 复制通过了特殊 __proto__ 字段、重复头、快照时机、相同对象及普通对象原型检查。7 轮相对现有 erest 的配对中位变化为 +0.93%;相对隔离副本为 +0.85%,范围 -1.29% ~ +1.22%。未改动副本本身也有 -0.33% ~ +2.54% 波动,目前不足以确认稳定收益。", + "通用微调没有明显赢家:预绑定校验器的吞吐配对中位变化在 -0.40% ~ +0.36%;Object.assign 参数合并在 -0.34% ~ +0.66%;同步 handler 包装在 -0.18% ~ +0.61%。这些范围是不同框架的中位值,非置信区间,初筛只有 3 轮。", + "共享 Reply 原型方法没有可靠收益,各框架配对中位变化为 -0.68% ~ +0.24%,也未明显降低 RSS 或存活堆。该写法还改变方法枚举和脱离对象调用时的行为,不值得为当前收益承担兼容性变化。Express 第二阶段有一次对照吞吐明显上升;保留该样本,不用单轮结果归因。", + "排除 getter 式延迟 headers 的当前实现:H3 吞吐约 -1.26%,CPU 增加约 5.895 μs/请求,RSS 配对中位增量约 157 MiB。此结果反对该具体实现,不能推出所有惰性或基于类的上下文设计都更慢。", + "Express 的短测 RSS 仍高于原生加 Zod,GC 后堆差距约 1.6~1.7 MiB。不同采样时长的 RSS 不能直接作泄漏或分配速率结论。若要降低峰值内存,下一步应采集分配/GC 时间序列并延长运行,不应基于单次 RSS 引入跨请求 Context/Reply 池。", + "本轮只新增隔离实验、兼容性检查、报告工具和数据,没有修改公开运行时代码。建议暂不合并这些诊断变体到运行时;优先研究保持 Web Headers 修改可见性及规范化行为的 H3 headers 快照构建,再独立复测。发压客户端在部分 H3 组接近一个逻辑核,吞吐不能视为服务端容量上限。" + ], + "inputSha256": [ + "a9f063f6665ce3e5880972abc442c1a39f08bc257bdd755a6f5ace1ecc3b0a66", + "fdcc457030fdef4352a65635dbb4291f021d30eb7afd1953d607181c90a2065b", + "bbdeb401b9368617b41a5988dada387df059ceec75af7b17bc0b3eacb89dce66" + ] + }, + "stages": [ + { + "input": "benchmarks/results/experiments/screen.json", + "raw": { + "startedAt": "2026-10-27T16:12:26.526Z", + "commit": "0d555732d1f5cac95f54a2281c4bcbd1121e0e24", + "harnessSha256": { + "fixture.mjs": "064fd8eb68b46d1b567bbea84b7655948def3687c5f9e68438c1bfdc511259e1", + "load.mjs": "ce51b4f707385179b4c69bfda7babe2534083005280e9819ddd207f97dafda5a", + "server.mjs": "d3d963157c8aeed9b1662a8bb4c33a49c6e1c555375b45981e80a43a9d18e72e", + "run.mjs": "0330171024592b77ca41a4779cefa8fd68ffa71478d284d380d70ebc4af4b3e4" + }, + "environment": { + "node": "v24.22.1", + "os": "Darwin 27.2.0 arm64", + "platform": "darwin", + "cpu": "Apple M2", + "logicalCpus": 8, + "availableParallelism": 8, + "systemMemoryBytes": 17179869184, + "cpuMax": null, + "memoryMax": null, + "versions": { + "erest": "3.4.0", + "packages/erest-express/": "3.4.0", + "packages/erest-koa/": "3.4.0", + "packages/erest-leizmweb/": "3.4.0", + "node_modules/express/": "5.2.1", + "node_modules/koa/": "3.0.0", + "node_modules/koa-router/": "13.1.1", + "node_modules/koa-bodyparser/": "4.4.1", + "node_modules/@leizm/web/": "2.7.3", + "node_modules/zod/": "4.4.3", + "packages/erest-h3/": "3.4.0", + "node_modules/h3/": "2.0.8" + } + }, + "config": { + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "scenarios": [ + "post" + ], + "concurrency": [ + 50 + ], + "rounds": 3, + "durationMs": 3000, + "warmupMs": 2000, + "serverCpu": null + }, + "experiments": { + "commit": "0d555732d1f5cac95f54a2281c4bcbd1121e0e24", + "prepareSha256": "2c46045c9efe1162abfb97dc794cb9f5d36e3aff113df81baca02d37540f8f5c", + "baseline": { + "dist/lib/api.js": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "dist/lib/adapters/utils.js": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "dist/lib/params.js": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "packages/erest-express/dist/index.js": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "packages/erest-koa/dist/index.js": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "packages/erest-leizmweb/dist/index.js": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "packages/erest-h3/dist/index.js": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0" + }, + "variants": { + "hoist": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/hoist", + "frameworks": [ + "express", + "koa", + "leizmweb" + ], + "patches": [ + "hoist" + ], + "descriptions": [ + "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly." + ], + "caveats": [ + "Must retain existing hook binding semantics and all layered/requiredOneOf behavior." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "5e738ee1b62fee37841aa7a176fba29d64ec8bcf84ae7b875c153470177626d3" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "15cc07b414ac5d4393170ce4cc5fd3ce8adfee1abdb6e417b579dc105c0a9bee" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "a6b044ae94621d9d237613bcaf89c0ba3ab5e0289aa6ef695887c6168a8082f9" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" + } + } + }, + "assign": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/assign", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [ + "assign" + ], + "descriptions": [ + "Replace four object spreads for flat params with Object.assign." + ], + "caveats": [ + "Diagnostic only: Object.assign treats an own __proto__ key differently; not safe to ship unchanged." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "f3537bce8dfaf13e39757a1a43428466f8d4a50fc3cd83ab2e85c3ba29f7cf86" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "f42d3219cd2f04c72167bddb5c96a9e442860d4bbca0173d465386dc293dca48" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "72e2f5ae67dc2f7afb42032c8628ca9e61eea2f9e8ff21a2296ffe18a2a8ce58" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "f2a0e652e0405aaa9b1e23d2715b39c07d638b2853971c69aa7c1ab1c4d86780" + } + } + }, + "sync": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/sync", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [ + "sync" + ], + "descriptions": [ + "Avoid unconditional async typed-handler wrapper; resolve async results via a shared finish callback." + ], + "caveats": [ + "Check rejection, response schemas, envelope return bookkeeping and async onion middleware before shipping." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "d5aebe36f501e7b13f787340b16746bc335ec5106d1caa7bfde605a483ef7bd0" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" + } + } + }, + "headers": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/headers", + "frameworks": [ + "h3" + ], + "patches": [ + "headers" + ], + "descriptions": [ + "Lazily materialize H3 ctx.headers on first access, cache the object and keep a setter." + ], + "caveats": [ + "Header snapshot timing/property descriptors differ; reject as a drop-in optimization without an API decision." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "00e65ed2af97fe50a1937ca1ef49645a9911b57839bfe9ed400468d2655d8b78" + } + } + } + } + }, + "selectedVariants": [ + "hoist", + "assign", + "sync", + "headers" + ], + "samples": [ + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 98951, + "errors": 0, + "elapsedMs": 3001.418792, + "rps": 32968.07505295316, + "latencyMs": { + "mean": 1.5159658204970146, + "p50": 1.455, + "p95": 1.83, + "p99": 2.939, + "max": 7.740790999999717 + }, + "clientCpuPercent": 87.63278909996242, + "serverCpuPercent": 106.68659007494097, + "serverCpuUsPerRequest": 32.36742428070459, + "serverRssMiB": 120.96875, + "serverRetainedHeapMiB": 13.987625122070312, + "idleRssMiB": 82.234375, + "server": { + "type": "stats", + "elapsedMs": 3002.0539579999995, + "cpu": { + "user": 2656933, + "system": 545856 + }, + "memory": { + "rss": 126844928, + "heapTotal": 38371328, + "heapUsed": 19262656, + "external": 4335057, + "arrayBuffers": 444802 + }, + "retainedMemory": { + "rss": 126926848, + "heapTotal": 34439168, + "heapUsed": 14667088, + "external": 4335057, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123952 + }, + "idleMemory": { + "rss": 86228992, + "heapTotal": 31555584, + "heapUsed": 12373912, + "external": 4167902, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 94475, + "errors": 0, + "elapsedMs": 3001.5807919999997, + "rps": 31475.0814809985, + "latencyMs": { + "mean": 1.5878460157607752, + "p50": 1.524, + "p95": 1.904, + "p99": 3.052, + "max": 6.302416999999878 + }, + "clientCpuPercent": 80.55395365149978, + "serverCpuPercent": 106.41310680906507, + "serverCpuUsPerRequest": 33.82337126223869, + "serverRssMiB": 165.90625, + "serverRetainedHeapMiB": 15.674789428710938, + "idleRssMiB": 85.96875, + "server": { + "type": "stats", + "elapsedMs": 3002.8847909999995, + "cpu": { + "user": 2648445, + "system": 547018 + }, + "memory": { + "rss": 173965312, + "heapTotal": 92110848, + "heapUsed": 46464448, + "external": 4583402, + "arrayBuffers": 615211 + }, + "retainedMemory": { + "rss": 173998080, + "heapTotal": 90013696, + "heapUsed": 16436208, + "external": 4583402, + "arrayBuffers": 277690 + }, + "maxRssKiB": 169920 + }, + "idleMemory": { + "rss": 90144768, + "heapTotal": 33390592, + "heapUsed": 14022624, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 1, + "requests": 93650, + "errors": 0, + "elapsedMs": 3001.5298330000005, + "rps": 31200.7560179396, + "latencyMs": { + "mean": 1.6017736851681799, + "p50": 1.541, + "p95": 1.925, + "p99": 3.088, + "max": 7.566000000000713 + }, + "clientCpuPercent": 78.99951464517059, + "serverCpuPercent": 106.46222713360578, + "serverCpuUsPerRequest": 34.13068873465029, + "serverRssMiB": 166.359375, + "serverRetainedHeapMiB": 15.676551818847656, + "idleRssMiB": 85.546875, + "server": { + "type": "stats", + "elapsedMs": 3002.322125, + "cpu": { + "user": 2642923, + "system": 553416 + }, + "memory": { + "rss": 174440448, + "heapTotal": 92635136, + "heapUsed": 26190872, + "external": 4383574, + "arrayBuffers": 417755 + }, + "retainedMemory": { + "rss": 174456832, + "heapTotal": 89751552, + "heapUsed": 16438056, + "external": 4383574, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170368 + }, + "idleMemory": { + "rss": 89702400, + "heapTotal": 33390592, + "heapUsed": 14022960, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 1, + "requests": 93710, + "errors": 0, + "elapsedMs": 3001.5089579999985, + "rps": 31220.96295939159, + "latencyMs": { + "mean": 1.6007059141287059, + "p50": 1.543, + "p95": 1.898, + "p99": 3.089, + "max": 12.127709000000323 + }, + "clientCpuPercent": 79.11990379606927, + "serverCpuPercent": 106.47727080325231, + "serverCpuUsPerRequest": 34.11334969587024, + "serverRssMiB": 166.625, + "serverRetainedHeapMiB": 15.695716857910156, + "idleRssMiB": 86.046875, + "server": { + "type": "stats", + "elapsedMs": 3002.2952090000003, + "cpu": { + "user": 2646350, + "system": 550412 + }, + "memory": { + "rss": 174718976, + "heapTotal": 92635136, + "heapUsed": 28439600, + "external": 4332726, + "arrayBuffers": 366907 + }, + "retainedMemory": { + "rss": 174751744, + "heapTotal": 90537984, + "heapUsed": 16458152, + "external": 4332726, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170656 + }, + "idleMemory": { + "rss": 90226688, + "heapTotal": 33128448, + "heapUsed": 14022600, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 1, + "requests": 95470, + "errors": 0, + "elapsedMs": 3001.548541, + "rps": 31806.915229228005, + "latencyMs": { + "mean": 1.5712305976118242, + "p50": 1.513, + "p95": 1.907, + "p99": 3.031, + "max": 6.244292000003043 + }, + "clientCpuPercent": 80.0792646584755, + "serverCpuPercent": 106.52046876277775, + "serverCpuUsPerRequest": 33.49920393840997, + "serverRssMiB": 166.890625, + "serverRetainedHeapMiB": 15.663154602050781, + "idleRssMiB": 86.09375, + "server": { + "type": "stats", + "elapsedMs": 3002.398541, + "cpu": { + "user": 2649350, + "system": 548819 + }, + "memory": { + "rss": 174997504, + "heapTotal": 92635136, + "heapUsed": 32563584, + "external": 4424238, + "arrayBuffers": 458419 + }, + "retainedMemory": { + "rss": 174997504, + "heapTotal": 90275840, + "heapUsed": 16424008, + "external": 4424238, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170896 + }, + "idleMemory": { + "rss": 90275840, + "heapTotal": 33128448, + "heapUsed": 14023216, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 122374, + "errors": 0, + "elapsedMs": 3001.0786249999983, + "rps": 40776.67242057015, + "latencyMs": { + "mean": 1.2256893643012379, + "p50": 1.176, + "p95": 1.48, + "p99": 2.378, + "max": 6.170083000000886 + }, + "clientCpuPercent": 94.88615114174164, + "serverCpuPercent": 107.7521926681871, + "serverCpuUsPerRequest": 26.430205762662002, + "serverRssMiB": 114.953125, + "serverRetainedHeapMiB": 14.046493530273438, + "idleRssMiB": 81.796875, + "server": { + "type": "stats", + "elapsedMs": 3001.674416, + "cpu": { + "user": 2596369, + "system": 638001 + }, + "memory": { + "rss": 120537088, + "heapTotal": 34177024, + "heapUsed": 21288768, + "external": 4218977, + "arrayBuffers": 311707 + }, + "retainedMemory": { + "rss": 120537088, + "heapTotal": 34177024, + "heapUsed": 14728816, + "external": 4218977, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117712 + }, + "idleMemory": { + "rss": 85770240, + "heapTotal": 31817728, + "heapUsed": 12366200, + "external": 4184917, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 120258, + "errors": 0, + "elapsedMs": 3001.200499999999, + "rps": 40069.96533553824, + "latencyMs": { + "mean": 1.247240621962748, + "p50": 1.193, + "p95": 1.568, + "p99": 2.424, + "max": 5.206540999999561 + }, + "clientCpuPercent": 93.88776258034079, + "serverCpuPercent": 107.80773173472147, + "serverCpuUsPerRequest": 26.91176470588235, + "serverRssMiB": 118.8125, + "serverRetainedHeapMiB": 15.533004760742188, + "idleRssMiB": 86.78125, + "server": { + "type": "stats", + "elapsedMs": 3001.969291, + "cpu": { + "user": 2610218, + "system": 626137 + }, + "memory": { + "rss": 124583936, + "heapTotal": 36012032, + "heapUsed": 17656856, + "external": 4245898, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 124600320, + "heapTotal": 36012032, + "heapUsed": 16287536, + "external": 4245898, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121680 + }, + "idleMemory": { + "rss": 90996736, + "heapTotal": 32866304, + "heapUsed": 13959888, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 1, + "requests": 121340, + "errors": 0, + "elapsedMs": 3001.2284999999974, + "rps": 40430.11053640205, + "latencyMs": { + "mean": 1.2361505513845408, + "p50": 1.183, + "p95": 1.429, + "p99": 2.386, + "max": 5.284291000003577 + }, + "clientCpuPercent": 94.94185464385676, + "serverCpuPercent": 107.99468702803475, + "serverCpuUsPerRequest": 26.718246250206032, + "serverRssMiB": 118.390625, + "serverRetainedHeapMiB": 15.5762939453125, + "idleRssMiB": 86.703125, + "server": { + "type": "stats", + "elapsedMs": 3001.992125, + "cpu": { + "user": 2603667, + "system": 638325 + }, + "memory": { + "rss": 124141568, + "heapTotal": 35749888, + "heapUsed": 23468264, + "external": 4277390, + "arrayBuffers": 311571 + }, + "retainedMemory": { + "rss": 124174336, + "heapTotal": 35749888, + "heapUsed": 16332928, + "external": 4277390, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121264 + }, + "idleMemory": { + "rss": 90914816, + "heapTotal": 33128448, + "heapUsed": 13965128, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 1, + "requests": 121044, + "errors": 0, + "elapsedMs": 3001.102291999996, + "rps": 40333.18035265429, + "latencyMs": { + "mean": 1.239196918385037, + "p50": 1.187, + "p95": 1.442, + "p99": 2.39, + "max": 5.257125000003725 + }, + "clientCpuPercent": 94.35926284647961, + "serverCpuPercent": 107.48551611019643, + "serverCpuUsPerRequest": 26.6550675787317, + "serverRssMiB": 118.421875, + "serverRetainedHeapMiB": 15.589828491210938, + "idleRssMiB": 86.578125, + "server": { + "type": "stats", + "elapsedMs": 3001.74025, + "cpu": { + "user": 2594424, + "system": 632012 + }, + "memory": { + "rss": 124174336, + "heapTotal": 35749888, + "heapUsed": 21291488, + "external": 4264878, + "arrayBuffers": 299059 + }, + "retainedMemory": { + "rss": 124190720, + "heapTotal": 35749888, + "heapUsed": 16347120, + "external": 4264878, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121280 + }, + "idleMemory": { + "rss": 90783744, + "heapTotal": 33128448, + "heapUsed": 13963200, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 1, + "requests": 121025, + "errors": 0, + "elapsedMs": 3001.2135000000053, + "rps": 40325.35506054461, + "latencyMs": { + "mean": 1.239323725370821, + "p50": 1.184, + "p95": 1.465, + "p99": 2.395, + "max": 6.799708999998984 + }, + "clientCpuPercent": 94.2434451930859, + "serverCpuPercent": 107.42198001351666, + "serverCpuUsPerRequest": 26.645255112580045, + "serverRssMiB": 118.765625, + "serverRetainedHeapMiB": 15.555671691894531, + "idleRssMiB": 86.71875, + "server": { + "type": "stats", + "elapsedMs": 3001.938709, + "cpu": { + "user": 2592091, + "system": 632651 + }, + "memory": { + "rss": 124534784, + "heapTotal": 36274176, + "heapUsed": 20270600, + "external": 4258758, + "arrayBuffers": 292939 + }, + "retainedMemory": { + "rss": 124649472, + "heapTotal": 36012032, + "heapUsed": 16311304, + "external": 4258758, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121728 + }, + "idleMemory": { + "rss": 90931200, + "heapTotal": 33128448, + "heapUsed": 13964768, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 120496, + "errors": 0, + "elapsedMs": 3001.2097090000025, + "rps": 40149.14373982518, + "latencyMs": { + "mean": 1.2447735130128763, + "p50": 1.183, + "p95": 1.522, + "p99": 2.415, + "max": 8.076208999998926 + }, + "clientCpuPercent": 94.22277262131827, + "serverCpuPercent": 106.23338271777666, + "serverCpuUsPerRequest": 26.466281038374717, + "serverRssMiB": 121.03125, + "serverRetainedHeapMiB": 15.594345092773438, + "idleRssMiB": 84.375, + "server": { + "type": "stats", + "elapsedMs": 3001.9574999999995, + "cpu": { + "user": 2549372, + "system": 639709 + }, + "memory": { + "rss": 126910464, + "heapTotal": 39436288, + "heapUsed": 23351248, + "external": 4224168, + "arrayBuffers": 293619 + }, + "retainedMemory": { + "rss": 126943232, + "heapTotal": 37863424, + "heapUsed": 16351856, + "external": 4224168, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123968 + }, + "idleMemory": { + "rss": 88473600, + "heapTotal": 33406976, + "heapUsed": 14168272, + "external": 4208196, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 110828, + "errors": 0, + "elapsedMs": 3001.442750000002, + "rps": 36924.90886257948, + "latencyMs": { + "mean": 1.3534895314270703, + "p50": 1.3, + "p95": 1.504, + "p99": 2.623, + "max": 7.3871670000007725 + }, + "clientCpuPercent": 89.60124260241173, + "serverCpuPercent": 107.35237745193737, + "serverCpuUsPerRequest": 29.07985346663298, + "serverRssMiB": 140.015625, + "serverRetainedHeapMiB": 17.196517944335938, + "idleRssMiB": 88.484375, + "server": { + "type": "stats", + "elapsedMs": 3002.1337919999996, + "cpu": { + "user": 2601906, + "system": 620956 + }, + "memory": { + "rss": 146817024, + "heapTotal": 58310656, + "heapUsed": 24532480, + "external": 4351968, + "arrayBuffers": 360498 + }, + "retainedMemory": { + "rss": 146817024, + "heapTotal": 58310656, + "heapUsed": 18031856, + "external": 4351968, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143376 + }, + "idleMemory": { + "rss": 92782592, + "heapTotal": 35241984, + "heapUsed": 15779832, + "external": 4334653, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 1, + "requests": 111092, + "errors": 0, + "elapsedMs": 3001.191500000001, + "rps": 37015.96515917094, + "latencyMs": { + "mean": 1.3502214563784745, + "p50": 1.294, + "p95": 1.53, + "p99": 2.612, + "max": 9.309207999998762 + }, + "clientCpuPercent": 89.4131547420416, + "serverCpuPercent": 107.61180583912439, + "serverCpuUsPerRequest": 29.077566341410723, + "serverRssMiB": 139.125, + "serverRetainedHeapMiB": 17.271484375, + "idleRssMiB": 88.25, + "server": { + "type": "stats", + "elapsedMs": 3001.79425, + "cpu": { + "user": 2609055, + "system": 621230 + }, + "memory": { + "rss": 145883136, + "heapTotal": 58310656, + "heapUsed": 25004256, + "external": 4354220, + "arrayBuffers": 365122 + }, + "retainedMemory": { + "rss": 145899520, + "heapTotal": 58048512, + "heapUsed": 18110464, + "external": 4354220, + "arrayBuffers": 343226 + }, + "maxRssKiB": 142480 + }, + "idleMemory": { + "rss": 92536832, + "heapTotal": 35241984, + "heapUsed": 15780416, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 1, + "requests": 110678, + "errors": 0, + "elapsedMs": 3001.3017919999984, + "rps": 36876.66475094687, + "latencyMs": { + "mean": 1.3552981911762207, + "p50": 1.297, + "p95": 1.543, + "p99": 2.62, + "max": 9.09179099999892 + }, + "clientCpuPercent": 89.2383100939421, + "serverCpuPercent": 107.02429103186678, + "serverCpuUsPerRequest": 29.02965358969262, + "serverRssMiB": 140.328125, + "serverRetainedHeapMiB": 17.20538330078125, + "idleRssMiB": 88.328125, + "server": { + "type": "stats", + "elapsedMs": 3002.0698750000006, + "cpu": { + "user": 2589836, + "system": 623108 + }, + "memory": { + "rss": 147144704, + "heapTotal": 58834944, + "heapUsed": 31588936, + "external": 4395972, + "arrayBuffers": 406874 + }, + "retainedMemory": { + "rss": 147144704, + "heapTotal": 58310656, + "heapUsed": 18041152, + "external": 4395972, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143696 + }, + "idleMemory": { + "rss": 92618752, + "heapTotal": 36028416, + "heapUsed": 15778792, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 1, + "requests": 111123, + "errors": 0, + "elapsedMs": 3001.346458, + "rps": 37024.38274122101, + "latencyMs": { + "mean": 1.3498529812010516, + "p50": 1.294, + "p95": 1.538, + "p99": 2.619, + "max": 6.480040999987978 + }, + "clientCpuPercent": 89.39451134834631, + "serverCpuPercent": 107.41158639773253, + "serverCpuUsPerRequest": 29.018250047244944, + "serverRssMiB": 139.484375, + "serverRetainedHeapMiB": 17.180198669433594, + "idleRssMiB": 88.28125, + "server": { + "type": "stats", + "elapsedMs": 3002.0923330000005, + "cpu": { + "user": 2602711, + "system": 621884 + }, + "memory": { + "rss": 146259968, + "heapTotal": 58048512, + "heapUsed": 33817336, + "external": 4411340, + "arrayBuffers": 422242 + }, + "retainedMemory": { + "rss": 146309120, + "heapTotal": 57786368, + "heapUsed": 18014744, + "external": 4411340, + "arrayBuffers": 353025 + }, + "maxRssKiB": 142880 + }, + "idleMemory": { + "rss": 92569600, + "heapTotal": 35241984, + "heapUsed": 15780040, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 139915, + "errors": 0, + "elapsedMs": 3000.9740420000016, + "rps": 46623.195683076796, + "latencyMs": { + "mean": 1.071972279112348, + "p50": 0.948, + "p95": 1.849, + "p99": 2.005, + "max": 6.7126659999921685 + }, + "clientCpuPercent": 100.21979390383538, + "serverCpuPercent": 106.36229709398476, + "serverCpuUsPerRequest": 22.81820390951649, + "serverRssMiB": 111.25, + "serverRetainedHeapMiB": 11.992713928222656, + "idleRssMiB": 74.875, + "server": { + "type": "stats", + "elapsedMs": 3001.6359999999995, + "cpu": { + "user": 2422083, + "system": 770526 + }, + "memory": { + "rss": 116654080, + "heapTotal": 31735808, + "heapUsed": 14020888, + "external": 4181569, + "arrayBuffers": 280803 + }, + "retainedMemory": { + "rss": 116670464, + "heapTotal": 31735808, + "heapUsed": 12575272, + "external": 4181569, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113936 + }, + "idleMemory": { + "rss": 78512128, + "heapTotal": 20463616, + "heapUsed": 10639072, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 127121, + "errors": 0, + "elapsedMs": 3001.249457999991, + "rps": 42356.025974832635, + "latencyMs": { + "mean": 1.1799551979373866, + "p50": 1.125, + "p95": 1.459, + "p99": 2.292, + "max": 5.641375000006519 + }, + "clientCpuPercent": 96.66597330877414, + "serverCpuPercent": 106.94786242972454, + "serverCpuUsPerRequest": 25.256094587046988, + "serverRssMiB": 114.453125, + "serverRetainedHeapMiB": 13.700973510742188, + "idleRssMiB": 81.109375, + "server": { + "type": "stats", + "elapsedMs": 3002.0048339999994, + "cpu": { + "user": 2529643, + "system": 680937 + }, + "memory": { + "rss": 120012800, + "heapTotal": 33832960, + "heapUsed": 17020200, + "external": 4277949, + "arrayBuffers": 286479 + }, + "retainedMemory": { + "rss": 120012800, + "heapTotal": 34095104, + "heapUsed": 14366512, + "external": 4277949, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117200 + }, + "idleMemory": { + "rss": 85049344, + "heapTotal": 31473664, + "heapUsed": 12358712, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 1, + "requests": 127318, + "errors": 0, + "elapsedMs": 3001.172749999998, + "rps": 42422.74957347926, + "latencyMs": { + "mean": 1.1780933080161506, + "p50": 1.121, + "p95": 1.371, + "p99": 2.291, + "max": 6.552707999988343 + }, + "clientCpuPercent": 96.86689978109398, + "serverCpuPercent": 106.67820347617355, + "serverCpuUsPerRequest": 25.1516046434911, + "serverRssMiB": 114.015625, + "serverRetainedHeapMiB": 13.774925231933594, + "idleRssMiB": 80.734375, + "server": { + "type": "stats", + "elapsedMs": 3001.7865840000004, + "cpu": { + "user": 2533656, + "system": 668596 + }, + "memory": { + "rss": 119554048, + "heapTotal": 34095104, + "heapUsed": 15607880, + "external": 4266805, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119554048, + "heapTotal": 34095104, + "heapUsed": 14444056, + "external": 4266805, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116752 + }, + "idleMemory": { + "rss": 84656128, + "heapTotal": 31473664, + "heapUsed": 12363608, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 1, + "requests": 126892, + "errors": 0, + "elapsedMs": 3001.1751249999943, + "rps": 42280.77160275685, + "latencyMs": { + "mean": 1.1820480208208848, + "p50": 1.123, + "p95": 1.453, + "p99": 2.297, + "max": 7.36241699999664 + }, + "clientCpuPercent": 96.62015308087047, + "serverCpuPercent": 107.30207460636588, + "serverCpuUsPerRequest": 25.38517794660026, + "serverRssMiB": 114.625, + "serverRetainedHeapMiB": 13.706779479980469, + "idleRssMiB": 80.59375, + "server": { + "type": "stats", + "elapsedMs": 3001.9699170000004, + "cpu": { + "user": 2548919, + "system": 672257 + }, + "memory": { + "rss": 120193024, + "heapTotal": 34095104, + "heapUsed": 18399864, + "external": 4284607, + "arrayBuffers": 295509 + }, + "retainedMemory": { + "rss": 120193024, + "heapTotal": 34095104, + "heapUsed": 14372600, + "external": 4284607, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117376 + }, + "idleMemory": { + "rss": 84508672, + "heapTotal": 31211520, + "heapUsed": 12362304, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "headers", + "round": 1, + "requests": 125846, + "errors": 0, + "elapsedMs": 3001.037958000001, + "rps": 41934.158035064735, + "latencyMs": { + "mean": 1.191882297824322, + "p50": 1.058, + "p95": 2.096, + "p99": 4.464, + "max": 6.2815840000112075 + }, + "clientCpuPercent": 93.93473323072175, + "serverCpuPercent": 130.31263844928796, + "serverCpuUsPerRequest": 31.086168809497323, + "serverRssMiB": 271.453125, + "serverRetainedHeapMiB": 12.2069091796875, + "idleRssMiB": 80.875, + "server": { + "type": "stats", + "elapsedMs": 3002.064916, + "cpu": { + "user": 3239522, + "system": 672548 + }, + "memory": { + "rss": 284639232, + "heapTotal": 169361408, + "heapUsed": 68803904, + "external": 4449658, + "arrayBuffers": 466030 + }, + "retainedMemory": { + "rss": 284639232, + "heapTotal": 159399936, + "heapUsed": 12799872, + "external": 4449658, + "arrayBuffers": 328903 + }, + "maxRssKiB": 277968 + }, + "idleMemory": { + "rss": 84803584, + "heapTotal": 30949376, + "heapUsed": 12362800, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 120406, + "errors": 0, + "elapsedMs": 3001.249542000005, + "rps": 40118.623365041, + "latencyMs": { + "mean": 1.245736625267812, + "p50": 1.195, + "p95": 1.449, + "p99": 2.403, + "max": 6.956374999994296 + }, + "clientCpuPercent": 94.08034755145313, + "serverCpuPercent": 107.93972935584226, + "serverCpuUsPerRequest": 26.9110509443051, + "serverRssMiB": 118.625, + "serverRetainedHeapMiB": 15.560836791992188, + "idleRssMiB": 86.953125, + "server": { + "type": "stats", + "elapsedMs": 3001.9085830000004, + "cpu": { + "user": 2604069, + "system": 636183 + }, + "memory": { + "rss": 124387328, + "heapTotal": 36012032, + "heapUsed": 19780104, + "external": 4258274, + "arrayBuffers": 290083 + }, + "retainedMemory": { + "rss": 124403712, + "heapTotal": 36012032, + "heapUsed": 16316720, + "external": 4258274, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121488 + }, + "idleMemory": { + "rss": 91176960, + "heapTotal": 33390592, + "heapUsed": 13961088, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 2, + "requests": 120834, + "errors": 0, + "elapsedMs": 3001.2316250000003, + "rps": 40261.47098859789, + "latencyMs": { + "mean": 1.2413366474667598, + "p50": 1.189, + "p95": 1.475, + "p99": 2.415, + "max": 6.2167090000002645 + }, + "clientCpuPercent": 94.27303032634143, + "serverCpuPercent": 107.25341451172585, + "serverCpuUsPerRequest": 26.6455798864558, + "serverRssMiB": 118.671875, + "serverRetainedHeapMiB": 15.527328491210938, + "idleRssMiB": 86.90625, + "server": { + "type": "stats", + "elapsedMs": 3001.94825, + "cpu": { + "user": 2588171, + "system": 631521 + }, + "memory": { + "rss": 124436480, + "heapTotal": 35487744, + "heapUsed": 21673064, + "external": 4267326, + "arrayBuffers": 301507 + }, + "retainedMemory": { + "rss": 124436480, + "heapTotal": 35487744, + "heapUsed": 16281584, + "external": 4267326, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121520 + }, + "idleMemory": { + "rss": 91127808, + "heapTotal": 32604160, + "heapUsed": 13964856, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 2, + "requests": 121249, + "errors": 0, + "elapsedMs": 3001.0283330000093, + "rps": 40402.48426404964, + "latencyMs": { + "mean": 1.2370902734290368, + "p50": 1.187, + "p95": 1.452, + "p99": 2.404, + "max": 6.1713330000056885 + }, + "clientCpuPercent": 94.25275892588486, + "serverCpuPercent": 107.48257183159375, + "serverCpuUsPerRequest": 26.608862753507246, + "serverRssMiB": 119.015625, + "serverRetainedHeapMiB": 15.565216064453125, + "idleRssMiB": 86.53125, + "server": { + "type": "stats", + "elapsedMs": 3001.694084, + "cpu": { + "user": 2591157, + "system": 635141 + }, + "memory": { + "rss": 124796928, + "heapTotal": 36012032, + "heapUsed": 19900560, + "external": 4256854, + "arrayBuffers": 291035 + }, + "retainedMemory": { + "rss": 124796928, + "heapTotal": 36012032, + "heapUsed": 16321312, + "external": 4256854, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121872 + }, + "idleMemory": { + "rss": 90734592, + "heapTotal": 32604160, + "heapUsed": 13963576, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 2, + "requests": 120596, + "errors": 0, + "elapsedMs": 3001.226291999992, + "rps": 40182.24161285614, + "latencyMs": { + "mean": 1.2438104602557198, + "p50": 1.19, + "p95": 1.488, + "p99": 2.407, + "max": 6.1712919999990845 + }, + "clientCpuPercent": 94.00527402816739, + "serverCpuPercent": 107.55559803569994, + "serverCpuUsPerRequest": 26.772902915519587, + "serverRssMiB": 118.734375, + "serverRetainedHeapMiB": 15.573158264160156, + "idleRssMiB": 87.015625, + "server": { + "type": "stats", + "elapsedMs": 3001.8939590000005, + "cpu": { + "user": 2605026, + "system": 623679 + }, + "memory": { + "rss": 124502016, + "heapTotal": 36274176, + "heapUsed": 20191808, + "external": 4258622, + "arrayBuffers": 292803 + }, + "retainedMemory": { + "rss": 124518400, + "heapTotal": 36274176, + "heapUsed": 16329640, + "external": 4258622, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121600 + }, + "idleMemory": { + "rss": 91242496, + "heapTotal": 33128448, + "heapUsed": 13964032, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 121602, + "errors": 0, + "elapsedMs": 3001.2002499999944, + "rps": 40517.78950771453, + "latencyMs": { + "mean": 1.23354138394109, + "p50": 1.177, + "p95": 1.494, + "p99": 2.388, + "max": 6.461834000001545 + }, + "clientCpuPercent": 94.909828159584, + "serverCpuPercent": 107.67486332865487, + "serverCpuUsPerRequest": 26.580821039127645, + "serverRssMiB": 114.78125, + "serverRetainedHeapMiB": 14.008377075195312, + "idleRssMiB": 81.46875, + "server": { + "type": "stats", + "elapsedMs": 3001.890042, + "cpu": { + "user": 2596347, + "system": 635934 + }, + "memory": { + "rss": 120356864, + "heapTotal": 34177024, + "heapUsed": 15940712, + "external": 4184977, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 120389632, + "heapTotal": 34177024, + "heapUsed": 14688848, + "external": 4184977, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117568 + }, + "idleMemory": { + "rss": 85426176, + "heapTotal": 31293440, + "heapUsed": 12368328, + "external": 4184917, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 111548, + "errors": 0, + "elapsedMs": 3001.319915999993, + "rps": 37166.31452893083, + "latencyMs": { + "mean": 1.3446931422975401, + "p50": 1.288, + "p95": 1.512, + "p99": 2.6, + "max": 7.578250000005937 + }, + "clientCpuPercent": 89.8176494158181, + "serverCpuPercent": 106.97565529714066, + "serverCpuUsPerRequest": 28.789704880410227, + "serverRssMiB": 138.453125, + "serverRetainedHeapMiB": 17.20671844482422, + "idleRssMiB": 88.46875, + "server": { + "type": "stats", + "elapsedMs": 3002.0232089999995, + "cpu": { + "user": 2595789, + "system": 615645 + }, + "memory": { + "rss": 145178624, + "heapTotal": 57524224, + "heapUsed": 28755176, + "external": 4377672, + "arrayBuffers": 386202 + }, + "retainedMemory": { + "rss": 145178624, + "heapTotal": 57524224, + "heapUsed": 18042552, + "external": 4377672, + "arrayBuffers": 343226 + }, + "maxRssKiB": 141776 + }, + "idleMemory": { + "rss": 92766208, + "heapTotal": 35241984, + "heapUsed": 15781616, + "external": 4400189, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 2, + "requests": 111190, + "errors": 0, + "elapsedMs": 3001.3669170000067, + "rps": 37046.453524295895, + "latencyMs": { + "mean": 1.3490911543933832, + "p50": 1.29, + "p95": 1.549, + "p99": 2.6, + "max": 7.231499999994412 + }, + "clientCpuPercent": 89.61066988398453, + "serverCpuPercent": 107.56791214842066, + "serverCpuUsPerRequest": 29.04311538807447, + "serverRssMiB": 139.984375, + "serverRetainedHeapMiB": 17.230224609375, + "idleRssMiB": 88.203125, + "server": { + "type": "stats", + "elapsedMs": 3002.1071669999997, + "cpu": { + "user": 2604633, + "system": 624671 + }, + "memory": { + "rss": 146784256, + "heapTotal": 58310656, + "heapUsed": 26937360, + "external": 4364699, + "arrayBuffers": 375601 + }, + "retainedMemory": { + "rss": 146800640, + "heapTotal": 58310656, + "heapUsed": 18067200, + "external": 4364699, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143360 + }, + "idleMemory": { + "rss": 92487680, + "heapTotal": 34979840, + "heapUsed": 15783448, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 2, + "requests": 111379, + "errors": 0, + "elapsedMs": 3001.330499999982, + "rps": 37109.875103725055, + "latencyMs": { + "mean": 1.3466948044424754, + "p50": 1.287, + "p95": 1.569, + "p99": 2.599, + "max": 10.20095900000888 + }, + "clientCpuPercent": 89.59783002904932, + "serverCpuPercent": 107.35435877814632, + "serverCpuUsPerRequest": 28.93563418597761, + "serverRssMiB": 139.671875, + "serverRetainedHeapMiB": 17.231307983398438, + "idleRssMiB": 88.390625, + "server": { + "type": "stats", + "elapsedMs": 3002.041125, + "cpu": { + "user": 2597976, + "system": 624846 + }, + "memory": { + "rss": 146456576, + "heapTotal": 58310656, + "heapUsed": 32590536, + "external": 4401963, + "arrayBuffers": 412865 + }, + "retainedMemory": { + "rss": 146456576, + "heapTotal": 58048512, + "heapUsed": 18068336, + "external": 4401963, + "arrayBuffers": 346082 + }, + "maxRssKiB": 143024 + }, + "idleMemory": { + "rss": 92684288, + "heapTotal": 34979840, + "heapUsed": 15779552, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 2, + "requests": 111140, + "errors": 0, + "elapsedMs": 3001.3755419999943, + "rps": 37029.68803628647, + "latencyMs": { + "mean": 1.3495941744196291, + "p50": 1.296, + "p95": 1.561, + "p99": 2.61, + "max": 6.100999999995111 + }, + "clientCpuPercent": 89.28832671882968, + "serverCpuPercent": 107.21559478968966, + "serverCpuUsPerRequest": 28.960995141263272, + "serverRssMiB": 139.296875, + "serverRetainedHeapMiB": 17.196250915527344, + "idleRssMiB": 88.359375, + "server": { + "type": "stats", + "elapsedMs": 3002.10525, + "cpu": { + "user": 2596001, + "system": 622724 + }, + "memory": { + "rss": 146063360, + "heapTotal": 57262080, + "heapUsed": 31304032, + "external": 4399372, + "arrayBuffers": 410274 + }, + "retainedMemory": { + "rss": 146079744, + "heapTotal": 56999936, + "heapUsed": 18031576, + "external": 4399372, + "arrayBuffers": 355745 + }, + "maxRssKiB": 142656 + }, + "idleMemory": { + "rss": 92651520, + "heapTotal": 35241984, + "heapUsed": 15780696, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 123883, + "errors": 0, + "elapsedMs": 3001.0604579999927, + "rps": 41279.74152262157, + "latencyMs": { + "mean": 1.210772393879759, + "p50": 1.154, + "p95": 1.433, + "p99": 2.367, + "max": 5.717833000002429 + }, + "clientCpuPercent": 95.4868134149401, + "serverCpuPercent": 106.48935343288717, + "serverCpuUsPerRequest": 25.80352429308299, + "serverRssMiB": 120.890625, + "serverRetainedHeapMiB": 15.57012939453125, + "idleRssMiB": 84.484375, + "server": { + "type": "stats", + "elapsedMs": 3001.8193340000003, + "cpu": { + "user": 2598144, + "system": 598474 + }, + "memory": { + "rss": 126763008, + "heapTotal": 39698432, + "heapUsed": 24097952, + "external": 4229064, + "arrayBuffers": 298515 + }, + "retainedMemory": { + "rss": 126779392, + "heapTotal": 38387712, + "heapUsed": 16326464, + "external": 4229064, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123808 + }, + "idleMemory": { + "rss": 88588288, + "heapTotal": 33406976, + "heapUsed": 14169536, + "external": 4208196, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 127271, + "errors": 0, + "elapsedMs": 3001.1244580000057, + "rps": 42407.77141405702, + "latencyMs": { + "mean": 1.178565467569218, + "p50": 1.122, + "p95": 1.411, + "p99": 2.277, + "max": 7.06541599999764 + }, + "clientCpuPercent": 96.85572993321007, + "serverCpuPercent": 106.78447410358731, + "serverCpuUsPerRequest": 25.185996809956706, + "serverRssMiB": 114.3125, + "serverRetainedHeapMiB": 13.747901916503906, + "idleRssMiB": 80.9375, + "server": { + "type": "stats", + "elapsedMs": 3001.79125, + "cpu": { + "user": 2522524, + "system": 682923 + }, + "memory": { + "rss": 119865344, + "heapTotal": 33570816, + "heapUsed": 15576848, + "external": 4269177, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119881728, + "heapTotal": 33570816, + "heapUsed": 14415720, + "external": 4269177, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117072 + }, + "idleMemory": { + "rss": 84869120, + "heapTotal": 31211520, + "heapUsed": 12359880, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 2, + "requests": 126921, + "errors": 0, + "elapsedMs": 3001.122457999998, + "rps": 42291.176643482395, + "latencyMs": { + "mean": 1.1817827226384239, + "p50": 1.124, + "p95": 1.378, + "p99": 2.284, + "max": 6.6991669999843 + }, + "clientCpuPercent": 96.61131928392646, + "serverCpuPercent": 107.02803045602843, + "serverCpuUsPerRequest": 25.3137069515683, + "serverRssMiB": 114.109375, + "serverRetainedHeapMiB": 13.702850341796875, + "idleRssMiB": 80.5625, + "server": { + "type": "stats", + "elapsedMs": 3001.86875, + "cpu": { + "user": 2530346, + "system": 682495 + }, + "memory": { + "rss": 119652352, + "heapTotal": 34095104, + "heapUsed": 21298328, + "external": 4303828, + "arrayBuffers": 314730 + }, + "retainedMemory": { + "rss": 119685120, + "heapTotal": 34095104, + "heapUsed": 14368480, + "external": 4303828, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116880 + }, + "idleMemory": { + "rss": 84475904, + "heapTotal": 31473664, + "heapUsed": 12362368, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 2, + "requests": 126929, + "errors": 0, + "elapsedMs": 3001.149167000025, + "rps": 42293.46591488464, + "latencyMs": { + "mean": 1.1817198897809036, + "p50": 1.12, + "p95": 1.46, + "p99": 2.294, + "max": 7.037000000011176 + }, + "clientCpuPercent": 96.83780572976684, + "serverCpuPercent": 107.19241768809678, + "serverCpuUsPerRequest": 25.350203657162666, + "serverRssMiB": 114.453125, + "serverRetainedHeapMiB": 13.810600280761719, + "idleRssMiB": 80.734375, + "server": { + "type": "stats", + "elapsedMs": 3001.7757500000002, + "cpu": { + "user": 2541692, + "system": 675984 + }, + "memory": { + "rss": 120012800, + "heapTotal": 33832960, + "heapUsed": 15587512, + "external": 4266805, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 120029184, + "heapTotal": 33832960, + "heapUsed": 14481464, + "external": 4266805, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117216 + }, + "idleMemory": { + "rss": 84656128, + "heapTotal": 31473664, + "heapUsed": 12364112, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "headers", + "round": 2, + "requests": 125152, + "errors": 0, + "elapsedMs": 3002.7404589999933, + "rps": 41679.259899032215, + "latencyMs": { + "mean": 1.1987949939753697, + "p50": 1.06, + "p95": 2.108, + "p99": 4.61, + "max": 6.800125000008848 + }, + "clientCpuPercent": 93.29237868706542, + "serverCpuPercent": 130.48791352397126, + "serverCpuUsPerRequest": 31.321433137305036, + "serverRssMiB": 270.015625, + "serverRetainedHeapMiB": 12.189720153808594, + "idleRssMiB": 80.65625, + "server": { + "type": "stats", + "elapsedMs": 3004.063667, + "cpu": { + "user": 3252756, + "system": 667184 + }, + "memory": { + "rss": 283131904, + "heapTotal": 193216512, + "heapUsed": 70129488, + "external": 4283764, + "arrayBuffers": 300136 + }, + "retainedMemory": { + "rss": 283131904, + "heapTotal": 150487040, + "heapUsed": 12781848, + "external": 4265704, + "arrayBuffers": 277690 + }, + "maxRssKiB": 276496 + }, + "idleMemory": { + "rss": 84574208, + "heapTotal": 31735808, + "heapUsed": 12362240, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 140531, + "errors": 0, + "elapsedMs": 3000.884665999998, + "rps": 46829.85707255438, + "latencyMs": { + "mean": 1.067312543132809, + "p50": 0.94, + "p95": 1.832, + "p99": 1.982, + "max": 5.425333000021055 + }, + "clientCpuPercent": 100.14206923872501, + "serverCpuPercent": 106.5253694020538, + "serverCpuUsPerRequest": 22.752374920835972, + "serverRssMiB": 111.1875, + "serverRetainedHeapMiB": 11.986892700195312, + "idleRssMiB": 75.515625, + "server": { + "type": "stats", + "elapsedMs": 3001.5516660000003, + "cpu": { + "user": 2435286, + "system": 762128 + }, + "memory": { + "rss": 116588544, + "heapTotal": 31211520, + "heapUsed": 15164712, + "external": 4190857, + "arrayBuffers": 290091 + }, + "retainedMemory": { + "rss": 116604928, + "heapTotal": 31211520, + "heapUsed": 12569168, + "external": 4190857, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113872 + }, + "idleMemory": { + "rss": 79183872, + "heapTotal": 20725760, + "heapUsed": 10639712, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 94463, + "errors": 0, + "elapsedMs": 3001.5540420000034, + "rps": 31471.36405948472, + "latencyMs": { + "mean": 1.5879216279495307, + "p50": 1.534, + "p95": 1.897, + "p99": 3.078, + "max": 6.354249999974854 + }, + "clientCpuPercent": 79.30268676468485, + "serverCpuPercent": 106.36537353798794, + "serverCpuUsPerRequest": 33.805034775520575, + "serverRssMiB": 166.65625, + "serverRetainedHeapMiB": 15.684585571289062, + "idleRssMiB": 86.078125, + "server": { + "type": "stats", + "elapsedMs": 3002.222334, + "cpu": { + "user": 2647949, + "system": 545376 + }, + "memory": { + "rss": 174751744, + "heapTotal": 92635136, + "heapUsed": 43767616, + "external": 4631394, + "arrayBuffers": 663203 + }, + "retainedMemory": { + "rss": 174768128, + "heapTotal": 90537984, + "heapUsed": 16446480, + "external": 4631394, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170672 + }, + "idleMemory": { + "rss": 90259456, + "heapTotal": 33390592, + "heapUsed": 14021936, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 2, + "requests": 94132, + "errors": 0, + "elapsedMs": 3001.542791999993, + "rps": 31361.20539440246, + "latencyMs": { + "mean": 1.5936195616156685, + "p50": 1.534, + "p95": 1.887, + "p99": 3.074, + "max": 7.241707999986829 + }, + "clientCpuPercent": 79.27703067709606, + "serverCpuPercent": 106.5841591059435, + "serverCpuUsPerRequest": 33.994369608634685, + "serverRssMiB": 166.609375, + "serverRetainedHeapMiB": 15.668502807617188, + "idleRssMiB": 86.109375, + "server": { + "type": "stats", + "elapsedMs": 3002.282916, + "cpu": { + "user": 2648172, + "system": 551786 + }, + "memory": { + "rss": 174702592, + "heapTotal": 92635136, + "heapUsed": 36665312, + "external": 4451574, + "arrayBuffers": 485755 + }, + "retainedMemory": { + "rss": 174768128, + "heapTotal": 90013696, + "heapUsed": 16429616, + "external": 4451574, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170672 + }, + "idleMemory": { + "rss": 90292224, + "heapTotal": 33652736, + "heapUsed": 14024704, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 2, + "requests": 94130, + "errors": 0, + "elapsedMs": 3001.325375000015, + "rps": 31362.810838194953, + "latencyMs": { + "mean": 1.5936195091787495, + "p50": 1.531, + "p95": 1.918, + "p99": 3.064, + "max": 6.587999999988824 + }, + "clientCpuPercent": 79.46086152022049, + "serverCpuPercent": 106.35577208901609, + "serverCpuUsPerRequest": 33.9193349622862, + "serverRssMiB": 166.671875, + "serverRetainedHeapMiB": 15.707038879394531, + "idleRssMiB": 85.734375, + "server": { + "type": "stats", + "elapsedMs": 3002.0251249999997, + "cpu": { + "user": 2646859, + "system": 545968 + }, + "memory": { + "rss": 174768128, + "heapTotal": 92635136, + "heapUsed": 37902792, + "external": 4459734, + "arrayBuffers": 493915 + }, + "retainedMemory": { + "rss": 174784512, + "heapTotal": 90275840, + "heapUsed": 16470024, + "external": 4459734, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170688 + }, + "idleMemory": { + "rss": 89899008, + "heapTotal": 33128448, + "heapUsed": 14023136, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 2, + "requests": 94432, + "errors": 0, + "elapsedMs": 3001.5129580000066, + "rps": 31461.46670741769, + "latencyMs": { + "mean": 1.5885492865659872, + "p50": 1.531, + "p95": 1.863, + "p99": 3.059, + "max": 6.659999999974389 + }, + "clientCpuPercent": 79.63803699827288, + "serverCpuPercent": 106.57046143461197, + "serverCpuUsPerRequest": 33.88022068790241, + "serverRssMiB": 166.328125, + "serverRetainedHeapMiB": 15.75140380859375, + "idleRssMiB": 85.734375, + "server": { + "type": "stats", + "elapsedMs": 3002.123625, + "cpu": { + "user": 2648118, + "system": 551259 + }, + "memory": { + "rss": 174407680, + "heapTotal": 92635136, + "heapUsed": 39719712, + "external": 4471838, + "arrayBuffers": 506019 + }, + "retainedMemory": { + "rss": 174424064, + "heapTotal": 90275840, + "heapUsed": 16516544, + "external": 4471838, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170336 + }, + "idleMemory": { + "rss": 89899008, + "heapTotal": 33128448, + "heapUsed": 14024968, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 98359, + "errors": 0, + "elapsedMs": 3001.4642919999897, + "rps": 32770.3382186365, + "latencyMs": { + "mean": 1.5250803330046259, + "p50": 1.467, + "p95": 1.732, + "p99": 2.932, + "max": 8.119791000004625 + }, + "clientCpuPercent": 82.54957443951523, + "serverCpuPercent": 106.75629159296223, + "serverCpuUsPerRequest": 32.58364765806891, + "serverRssMiB": 120.75, + "serverRetainedHeapMiB": 14.083168029785156, + "idleRssMiB": 81.78125, + "server": { + "type": "stats", + "elapsedMs": 3002.0666250000004, + "cpu": { + "user": 2648973, + "system": 555922 + }, + "memory": { + "rss": 126615552, + "heapTotal": 38895616, + "heapUsed": 19899352, + "external": 4275233, + "arrayBuffers": 384978 + }, + "retainedMemory": { + "rss": 126828544, + "heapTotal": 34701312, + "heapUsed": 14767272, + "external": 4275233, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123856 + }, + "idleMemory": { + "rss": 85753856, + "heapTotal": 31555584, + "heapUsed": 12373704, + "external": 4167902, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 3, + "requests": 111256, + "errors": 0, + "elapsedMs": 3001.340541999991, + "rps": 37068.76925264295, + "latencyMs": { + "mean": 1.3482804300711857, + "p50": 1.292, + "p95": 1.539, + "p99": 2.608, + "max": 8.955667000001995 + }, + "clientCpuPercent": 89.55848103157393, + "serverCpuPercent": 107.20462982673986, + "serverCpuUsPerRequest": 28.92633206298986, + "serverRssMiB": 139.453125, + "serverRetainedHeapMiB": 17.269508361816406, + "idleRssMiB": 88.5, + "server": { + "type": "stats", + "elapsedMs": 3001.9487080000004, + "cpu": { + "user": 2595605, + "system": 622623 + }, + "memory": { + "rss": 146227200, + "heapTotal": 58310656, + "heapUsed": 29475200, + "external": 4381291, + "arrayBuffers": 392193 + }, + "retainedMemory": { + "rss": 146227200, + "heapTotal": 57786368, + "heapUsed": 18108392, + "external": 4381291, + "arrayBuffers": 343226 + }, + "maxRssKiB": 142800 + }, + "idleMemory": { + "rss": 92798976, + "heapTotal": 35241984, + "heapUsed": 15781568, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 3, + "requests": 112196, + "errors": 0, + "elapsedMs": 3001.304332999978, + "rps": 37382.413628095346, + "latencyMs": { + "mean": 1.3369397838069075, + "p50": 1.28, + "p95": 1.55, + "p99": 2.595, + "max": 10.964291000011144 + }, + "clientCpuPercent": 90.04455064037718, + "serverCpuPercent": 107.1805568810677, + "serverCpuUsPerRequest": 28.676779920852795, + "serverRssMiB": 140.09375, + "serverRetainedHeapMiB": 17.26769256591797, + "idleRssMiB": 88.484375, + "server": { + "type": "stats", + "elapsedMs": 3001.8690829999996, + "cpu": { + "user": 2608307, + "system": 609113 + }, + "memory": { + "rss": 146898944, + "heapTotal": 58310656, + "heapUsed": 34976760, + "external": 4415284, + "arrayBuffers": 426186 + }, + "retainedMemory": { + "rss": 146898944, + "heapTotal": 58048512, + "heapUsed": 18106488, + "external": 4415284, + "arrayBuffers": 368658 + }, + "maxRssKiB": 143456 + }, + "idleMemory": { + "rss": 92782592, + "heapTotal": 35241984, + "heapUsed": 15780760, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 3, + "requests": 110400, + "errors": 0, + "elapsedMs": 3001.3605830000015, + "rps": 36783.3177477296, + "latencyMs": { + "mean": 1.3587030719022213, + "p50": 1.298, + "p95": 1.574, + "p99": 2.612, + "max": 9.647082999988925 + }, + "clientCpuPercent": 89.15276675371726, + "serverCpuPercent": 107.05331584964335, + "serverCpuUsPerRequest": 29.11100543478261, + "serverRssMiB": 140.859375, + "serverRetainedHeapMiB": 17.20842742919922, + "idleRssMiB": 88.359375, + "server": { + "type": "stats", + "elapsedMs": 3002.1069169999996, + "cpu": { + "user": 2589076, + "system": 624779 + }, + "memory": { + "rss": 147701760, + "heapTotal": 59097088, + "heapUsed": 28256048, + "external": 4375443, + "arrayBuffers": 386345 + }, + "retainedMemory": { + "rss": 147734528, + "heapTotal": 58834944, + "heapUsed": 18044344, + "external": 4375443, + "arrayBuffers": 343226 + }, + "maxRssKiB": 144272 + }, + "idleMemory": { + "rss": 92651520, + "heapTotal": 35241984, + "heapUsed": 15780360, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 121363, + "errors": 0, + "elapsedMs": 3001.235457999981, + "rps": 40437.68031478481, + "latencyMs": { + "mean": 1.2359639740118176, + "p50": 1.179, + "p95": 1.408, + "p99": 2.381, + "max": 9.89837500001886 + }, + "clientCpuPercent": 94.68737257601792, + "serverCpuPercent": 106.601874698492, + "serverCpuUsPerRequest": 26.36769031747732, + "serverRssMiB": 120.890625, + "serverRetainedHeapMiB": 15.621009826660156, + "idleRssMiB": 84.515625, + "server": { + "type": "stats", + "elapsedMs": 3001.8815420000005, + "cpu": { + "user": 2572662, + "system": 627400 + }, + "memory": { + "rss": 126763008, + "heapTotal": 39174144, + "heapUsed": 23262000, + "external": 4223352, + "arrayBuffers": 292803 + }, + "retainedMemory": { + "rss": 126763008, + "heapTotal": 38912000, + "heapUsed": 16379816, + "external": 4223352, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123792 + }, + "idleMemory": { + "rss": 88621056, + "heapTotal": 33406976, + "heapUsed": 14170952, + "external": 4208196, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 110290, + "errors": 0, + "elapsedMs": 3001.299291000003, + "rps": 36747.418136780514, + "latencyMs": { + "mean": 1.360012395439307, + "p50": 1.301, + "p95": 1.533, + "p99": 2.641, + "max": 10.809832999977516 + }, + "clientCpuPercent": 89.23272024322739, + "serverCpuPercent": 107.03467471799478, + "serverCpuUsPerRequest": 29.13462689273733, + "serverRssMiB": 139.828125, + "serverRetainedHeapMiB": 17.190460205078125, + "idleRssMiB": 88.5625, + "server": { + "type": "stats", + "elapsedMs": 3002.0719999999997, + "cpu": { + "user": 2587164, + "system": 626094 + }, + "memory": { + "rss": 146620416, + "heapTotal": 58048512, + "heapUsed": 36752424, + "external": 4429216, + "arrayBuffers": 437746 + }, + "retainedMemory": { + "rss": 146620416, + "heapTotal": 58048512, + "heapUsed": 18025504, + "external": 4429216, + "arrayBuffers": 370018 + }, + "maxRssKiB": 143184 + }, + "idleMemory": { + "rss": 92864512, + "heapTotal": 35504128, + "heapUsed": 15778576, + "external": 4400189, + "arrayBuffers": 277651 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 3, + "requests": 127134, + "errors": 0, + "elapsedMs": 3001.187042000005, + "rps": 42361.23847691856, + "latencyMs": { + "mean": 1.179790371655115, + "p50": 1.12, + "p95": 1.602, + "p99": 2.322, + "max": 6.2537500000034925 + }, + "clientCpuPercent": 96.8934944508532, + "serverCpuPercent": 106.83702309603808, + "serverCpuUsPerRequest": 25.22669781490396, + "serverRssMiB": 114.3125, + "serverRetainedHeapMiB": 13.716453552246094, + "idleRssMiB": 81.109375, + "server": { + "type": "stats", + "elapsedMs": 3001.9284580000003, + "cpu": { + "user": 2524719, + "system": 682452 + }, + "memory": { + "rss": 119865344, + "heapTotal": 33832960, + "heapUsed": 17453272, + "external": 4278286, + "arrayBuffers": 289188 + }, + "retainedMemory": { + "rss": 119881728, + "heapTotal": 33832960, + "heapUsed": 14382744, + "external": 4278286, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117072 + }, + "idleMemory": { + "rss": 85049344, + "heapTotal": 31473664, + "heapUsed": 12362080, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 3, + "requests": 127192, + "errors": 0, + "elapsedMs": 3001.0981249999895, + "rps": 42381.8198213697, + "latencyMs": { + "mean": 1.1792671386564906, + "p50": 1.12, + "p95": 1.477, + "p99": 2.292, + "max": 6.4476250000006985 + }, + "clientCpuPercent": 96.74868594974748, + "serverCpuPercent": 106.76314242956877, + "serverCpuUsPerRequest": 25.19543681992578, + "serverRssMiB": 114.828125, + "serverRetainedHeapMiB": 13.788360595703125, + "idleRssMiB": 80.625, + "server": { + "type": "stats", + "elapsedMs": 3001.6520000000005, + "cpu": { + "user": 2533561, + "system": 671097 + }, + "memory": { + "rss": 120406016, + "heapTotal": 33832960, + "heapUsed": 19007104, + "external": 4289251, + "arrayBuffers": 300153 + }, + "retainedMemory": { + "rss": 120406016, + "heapTotal": 33832960, + "heapUsed": 14458144, + "external": 4289251, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117584 + }, + "idleMemory": { + "rss": 84541440, + "heapTotal": 31211520, + "heapUsed": 12361824, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "headers", + "round": 3, + "requests": 125091, + "errors": 0, + "elapsedMs": 3001.1301669999957, + "rps": 41681.297724265016, + "latencyMs": { + "mean": 1.1991121726183023, + "p50": 1.066, + "p95": 2.116, + "p99": 4.517, + "max": 6.284832999983337 + }, + "clientCpuPercent": 93.553789531449, + "serverCpuPercent": 130.07255758070815, + "serverCpuUsPerRequest": 31.217825423091988, + "serverRssMiB": 274.5, + "serverRetainedHeapMiB": 12.205413818359375, + "idleRssMiB": 80.75, + "server": { + "type": "stats", + "elapsedMs": 3002.223584, + "cpu": { + "user": 3238617, + "system": 666452 + }, + "memory": { + "rss": 287834112, + "heapTotal": 180371456, + "heapUsed": 68664944, + "external": 4360132, + "arrayBuffers": 376504 + }, + "retainedMemory": { + "rss": 287850496, + "heapTotal": 157827072, + "heapUsed": 12798304, + "external": 4360132, + "arrayBuffers": 277690 + }, + "maxRssKiB": 281104 + }, + "idleMemory": { + "rss": 84672512, + "heapTotal": 31473664, + "heapUsed": 12364912, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 139359, + "errors": 0, + "elapsedMs": 3000.972207999992, + "rps": 46437.95088421571, + "latencyMs": { + "mean": 1.0762840690949618, + "p50": 0.942, + "p95": 1.835, + "p99": 1.986, + "max": 6.978000000002794 + }, + "clientCpuPercent": 100.2470463398576, + "serverCpuPercent": 106.3528944217896, + "serverCpuUsPerRequest": 22.909241599035585, + "serverRssMiB": 110.703125, + "serverRetainedHeapMiB": 11.993621826171875, + "idleRssMiB": 74.984375, + "server": { + "type": "stats", + "elapsedMs": 3001.901375, + "cpu": { + "user": 2428706, + "system": 763903 + }, + "memory": { + "rss": 116080640, + "heapTotal": 31473664, + "heapUsed": 13902992, + "external": 4180150, + "arrayBuffers": 279384 + }, + "retainedMemory": { + "rss": 116080640, + "heapTotal": 31473664, + "heapUsed": 12576224, + "external": 4180150, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113360 + }, + "idleMemory": { + "rss": 78626816, + "heapTotal": 20987904, + "heapUsed": 10640080, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 126694, + "errors": 0, + "elapsedMs": 3001.1816249999974, + "rps": 42214.70601600131, + "latencyMs": { + "mean": 1.1838723671207332, + "p50": 1.126, + "p95": 1.455, + "p99": 2.286, + "max": 6.544541000010213 + }, + "clientCpuPercent": 96.75812272774402, + "serverCpuPercent": 106.87949334402064, + "serverCpuUsPerRequest": 25.322990828294948, + "serverRssMiB": 113.875, + "serverRetainedHeapMiB": 13.7899169921875, + "idleRssMiB": 80.75, + "server": { + "type": "stats", + "elapsedMs": 3001.764791, + "cpu": { + "user": 2527573, + "system": 680698 + }, + "memory": { + "rss": 119406592, + "heapTotal": 33570816, + "heapUsed": 21729480, + "external": 4308909, + "arrayBuffers": 317439 + }, + "retainedMemory": { + "rss": 119422976, + "heapTotal": 33570816, + "heapUsed": 14459776, + "external": 4308909, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116624 + }, + "idleMemory": { + "rss": 84672512, + "heapTotal": 31211520, + "heapUsed": 12363384, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 3, + "requests": 93934, + "errors": 0, + "elapsedMs": 3001.5857909999904, + "rps": 31294.79100069484, + "latencyMs": { + "mean": 1.5968858806396282, + "p50": 1.535, + "p95": 1.92, + "p99": 3.074, + "max": 21.32458400001633 + }, + "clientCpuPercent": 79.30218110497471, + "serverCpuPercent": 106.65435437540438, + "serverCpuUsPerRequest": 34.08799795601167, + "serverRssMiB": 165.40625, + "serverRetainedHeapMiB": 15.698776245117188, + "idleRssMiB": 85.578125, + "server": { + "type": "stats", + "elapsedMs": 3002.2421670000003, + "cpu": { + "user": 2650263, + "system": 551759 + }, + "memory": { + "rss": 173441024, + "heapTotal": 92635136, + "heapUsed": 34083608, + "external": 4434846, + "arrayBuffers": 469027 + }, + "retainedMemory": { + "rss": 173490176, + "heapTotal": 89751552, + "heapUsed": 16461360, + "external": 4434846, + "arrayBuffers": 277690 + }, + "maxRssKiB": 169424 + }, + "idleMemory": { + "rss": 89735168, + "heapTotal": 33390592, + "heapUsed": 14022848, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 3, + "requests": 94318, + "errors": 0, + "elapsedMs": 3001.55016600003, + "rps": 31423.096328152144, + "latencyMs": { + "mean": 1.5904383136518165, + "p50": 1.532, + "p95": 1.908, + "p99": 3.067, + "max": 7.096832999959588 + }, + "clientCpuPercent": 79.48196325431584, + "serverCpuPercent": 106.51070480151546, + "serverCpuUsPerRequest": 33.90431306855531, + "serverRssMiB": 166.40625, + "serverRetainedHeapMiB": 15.642044067382812, + "idleRssMiB": 85.890625, + "server": { + "type": "stats", + "elapsedMs": 3002.315125, + "cpu": { + "user": 2650947, + "system": 546840 + }, + "memory": { + "rss": 174489600, + "heapTotal": 92635136, + "heapUsed": 42417104, + "external": 4554102, + "arrayBuffers": 588283 + }, + "retainedMemory": { + "rss": 174505984, + "heapTotal": 90275840, + "heapUsed": 16401872, + "external": 4554102, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170416 + }, + "idleMemory": { + "rss": 90062848, + "heapTotal": 33652736, + "heapUsed": 14024080, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 3, + "requests": 94880, + "errors": 0, + "elapsedMs": 3001.5262079999666, + "rps": 31610.58522398251, + "latencyMs": { + "mean": 1.5809532960475332, + "p50": 1.516, + "p95": 1.899, + "p99": 3.043, + "max": 7.8711659999680705 + }, + "clientCpuPercent": 80.31770615810751, + "serverCpuPercent": 106.47573065664461, + "serverCpuUsPerRequest": 33.69195826306914, + "serverRssMiB": 166.75, + "serverRetainedHeapMiB": 15.676223754882812, + "idleRssMiB": 85.984375, + "server": { + "type": "stats", + "elapsedMs": 3002.2738329999997, + "cpu": { + "user": 2657442, + "system": 539251 + }, + "memory": { + "rss": 174850048, + "heapTotal": 92372992, + "heapUsed": 44372808, + "external": 4568110, + "arrayBuffers": 602291 + }, + "retainedMemory": { + "rss": 174931968, + "heapTotal": 90537984, + "heapUsed": 16437712, + "external": 4568110, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170832 + }, + "idleMemory": { + "rss": 90161152, + "heapTotal": 33128448, + "heapUsed": 14024776, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 98094, + "errors": 0, + "elapsedMs": 3001.4504580000066, + "rps": 32682.19861452059, + "latencyMs": { + "mean": 1.5291559823230807, + "p50": 1.473, + "p95": 1.749, + "p99": 2.944, + "max": 6.089375000039581 + }, + "clientCpuPercent": 82.22970975321674, + "serverCpuPercent": 106.72597119746422, + "serverCpuUsPerRequest": 32.66309866046853, + "serverRssMiB": 120.765625, + "serverRetainedHeapMiB": 14.074775695800781, + "idleRssMiB": 81.9375, + "server": { + "type": "stats", + "elapsedMs": 3002.1314999999995, + "cpu": { + "user": 2646175, + "system": 557879 + }, + "memory": { + "rss": 126631936, + "heapTotal": 37584896, + "heapUsed": 16043040, + "external": 4246401, + "arrayBuffers": 356146 + }, + "retainedMemory": { + "rss": 126451712, + "heapTotal": 34177024, + "heapUsed": 14758472, + "external": 4246401, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123824 + }, + "idleMemory": { + "rss": 85917696, + "heapTotal": 31817728, + "heapUsed": 12372336, + "external": 4167902, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 94309, + "errors": 0, + "elapsedMs": 3001.5593339999905, + "rps": 31420.001907581915, + "latencyMs": { + "mean": 1.5906521562099314, + "p50": 1.53, + "p95": 1.902, + "p99": 3.062, + "max": 7.441749999998137 + }, + "clientCpuPercent": 79.74485038115884, + "serverCpuPercent": 106.55642974396753, + "serverCpuUsPerRequest": 33.921492116340964, + "serverRssMiB": 166.328125, + "serverRetainedHeapMiB": 15.687019348144531, + "idleRssMiB": 86.1875, + "server": { + "type": "stats", + "elapsedMs": 3002.2608750000004, + "cpu": { + "user": 2651142, + "system": 547960 + }, + "memory": { + "rss": 174407680, + "heapTotal": 92635136, + "heapUsed": 40410304, + "external": 4543962, + "arrayBuffers": 575771 + }, + "retainedMemory": { + "rss": 174440448, + "heapTotal": 90013696, + "heapUsed": 16449032, + "external": 4543962, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170352 + }, + "idleMemory": { + "rss": 90374144, + "heapTotal": 32866304, + "heapUsed": 14022792, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "round": 3, + "requests": 120300, + "errors": 0, + "elapsedMs": 3001.2446669999626, + "rps": 40083.36985076648, + "latencyMs": { + "mean": 1.2468814877888672, + "p50": 1.196, + "p95": 1.443, + "p99": 2.404, + "max": 6.258458999975119 + }, + "clientCpuPercent": 93.84179940302198, + "serverCpuPercent": 107.6306940651594, + "serverCpuUsPerRequest": 26.85773067331671, + "serverRssMiB": 118.3125, + "serverRetainedHeapMiB": 15.570831298828125, + "idleRssMiB": 86.328125, + "server": { + "type": "stats", + "elapsedMs": 3001.9178340000003, + "cpu": { + "user": 2595967, + "system": 635018 + }, + "memory": { + "rss": 124059648, + "heapTotal": 36012032, + "heapUsed": 19346936, + "external": 4253318, + "arrayBuffers": 287499 + }, + "retainedMemory": { + "rss": 124076032, + "heapTotal": 36012032, + "heapUsed": 16327200, + "external": 4253318, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121168 + }, + "idleMemory": { + "rss": 90521600, + "heapTotal": 33128448, + "heapUsed": 13969032, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "round": 3, + "requests": 119194, + "errors": 0, + "elapsedMs": 3001.226708000002, + "rps": 39715.09372560199, + "latencyMs": { + "mean": 1.258393483069654, + "p50": 1.207, + "p95": 1.48, + "p99": 2.421, + "max": 5.9237499999580905 + }, + "clientCpuPercent": 93.47427811841258, + "serverCpuPercent": 107.80990565386251, + "serverCpuUsPerRequest": 27.152759367082236, + "serverRssMiB": 118.65625, + "serverRetainedHeapMiB": 15.55908203125, + "idleRssMiB": 86.296875, + "server": { + "type": "stats", + "elapsedMs": 3001.9931659999997, + "cpu": { + "user": 2609072, + "system": 627374 + }, + "memory": { + "rss": 124420096, + "heapTotal": 36012032, + "heapUsed": 23858000, + "external": 4279294, + "arrayBuffers": 313475 + }, + "retainedMemory": { + "rss": 124452864, + "heapTotal": 36012032, + "heapUsed": 16314880, + "external": 4279294, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121536 + }, + "idleMemory": { + "rss": 90488832, + "heapTotal": 33128448, + "heapUsed": 13964024, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "round": 3, + "requests": 121933, + "errors": 0, + "elapsedMs": 3001.2021669999813, + "rps": 40628.052765230714, + "latencyMs": { + "mean": 1.2301952723627012, + "p50": 1.182, + "p95": 1.449, + "p99": 2.371, + "max": 5.660957999993116 + }, + "clientCpuPercent": 94.68479102294403, + "serverCpuPercent": 108.24912355524052, + "serverCpuUsPerRequest": 26.64934841265285, + "serverRssMiB": 118.953125, + "serverRetainedHeapMiB": 15.6287841796875, + "idleRssMiB": 86.84375, + "server": { + "type": "stats", + "elapsedMs": 3001.8118329999998, + "cpu": { + "user": 2614600, + "system": 634835 + }, + "memory": { + "rss": 124731392, + "heapTotal": 36012032, + "heapUsed": 23298568, + "external": 4276438, + "arrayBuffers": 310619 + }, + "retainedMemory": { + "rss": 124731392, + "heapTotal": 36012032, + "heapUsed": 16387968, + "external": 4276438, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121808 + }, + "idleMemory": { + "rss": 91062272, + "heapTotal": 33128448, + "heapUsed": 13963512, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 123203, + "errors": 0, + "elapsedMs": 3001.1745420000516, + "rps": 41051.59439273888, + "latencyMs": { + "mean": 1.2174357200149404, + "p50": 1.163, + "p95": 1.462, + "p99": 2.359, + "max": 5.689416000037454 + }, + "clientCpuPercent": 95.16517483507131, + "serverCpuPercent": 107.32477683186254, + "serverCpuUsPerRequest": 26.150183031257356, + "serverRssMiB": 115.09375, + "serverRetainedHeapMiB": 13.984550476074219, + "idleRssMiB": 82.03125, + "server": { + "type": "stats", + "elapsedMs": 3001.898625, + "cpu": { + "user": 2589192, + "system": 632589 + }, + "memory": { + "rss": 120684544, + "heapTotal": 34177024, + "heapUsed": 20473856, + "external": 4214217, + "arrayBuffers": 306947 + }, + "retainedMemory": { + "rss": 120733696, + "heapTotal": 34177024, + "heapUsed": 14663864, + "external": 4214217, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117904 + }, + "idleMemory": { + "rss": 86016000, + "heapTotal": 31555584, + "heapUsed": 12365704, + "external": 4184917, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 121190, + "errors": 0, + "elapsedMs": 3001.2375830000383, + "rps": 40380.00879585762, + "latencyMs": { + "mean": 1.2376590867976334, + "p50": 1.184, + "p95": 1.449, + "p99": 2.385, + "max": 7.806041000003461 + }, + "clientCpuPercent": 94.30859509531751, + "serverCpuPercent": 107.71886218069031, + "serverCpuUsPerRequest": 26.68330720356465, + "serverRssMiB": 118.953125, + "serverRetainedHeapMiB": 15.532058715820312, + "idleRssMiB": 87.015625, + "server": { + "type": "stats", + "elapsedMs": 3002.0276249999997, + "cpu": { + "user": 2598699, + "system": 635051 + }, + "memory": { + "rss": 124731392, + "heapTotal": 36274176, + "heapUsed": 17647400, + "external": 4245898, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 124731392, + "heapTotal": 36274176, + "heapUsed": 16286544, + "external": 4245898, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121808 + }, + "idleMemory": { + "rss": 91242496, + "heapTotal": 33128448, + "heapUsed": 13960240, + "external": 4442600, + "arrayBuffers": 212115 + } + } + ], + "finishedAt": "2026-10-27T16:17:35.486Z", + "elapsedSeconds": 308.94296879200004 + }, + "groups": [ + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 3, + "errors": 0, + "rps": 32770.3382186365, + "cpuUs": 32.58364765806891, + "meanMs": 1.5250803330046259, + "p95Ms": 1.749, + "rssMiB": 120.765625, + "heapMiB": 14.074775695800781, + "clientCpu": 82.54957443951523 + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 3, + "errors": 0, + "rps": 31471.36405948472, + "cpuUs": 33.82337126223869, + "meanMs": 1.5879216279495307, + "p95Ms": 1.902, + "rssMiB": 166.328125, + "heapMiB": 15.684585571289062, + "clientCpu": 79.74485038115884 + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "rounds": 3, + "errors": 0, + "rps": 31294.79100069484, + "cpuUs": 34.08799795601167, + "meanMs": 1.5968858806396282, + "p95Ms": 1.92, + "rssMiB": 166.359375, + "heapMiB": 15.676551818847656, + "clientCpu": 79.27703067709606 + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "rounds": 3, + "errors": 0, + "rps": 31362.810838194953, + "cpuUs": 33.9193349622862, + "meanMs": 1.5936195091787495, + "p95Ms": 1.908, + "rssMiB": 166.625, + "heapMiB": 15.695716857910156, + "clientCpu": 79.46086152022049 + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "rounds": 3, + "errors": 0, + "rps": 31610.58522398251, + "cpuUs": 33.69195826306914, + "meanMs": 1.5809532960475332, + "p95Ms": 1.899, + "rssMiB": 166.75, + "heapMiB": 15.676223754882812, + "clientCpu": 80.0792646584755 + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 3, + "errors": 0, + "rps": 40776.67242057015, + "cpuUs": 26.430205762662002, + "meanMs": 1.2256893643012379, + "p95Ms": 1.48, + "rssMiB": 114.953125, + "heapMiB": 14.008377075195312, + "clientCpu": 94.909828159584 + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 3, + "errors": 0, + "rps": 40118.623365041, + "cpuUs": 26.9110509443051, + "meanMs": 1.245736625267812, + "p95Ms": 1.449, + "rssMiB": 118.8125, + "heapMiB": 15.533004760742188, + "clientCpu": 94.08034755145313 + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "rounds": 3, + "errors": 0, + "rps": 40261.47098859789, + "cpuUs": 26.718246250206032, + "meanMs": 1.2413366474667598, + "p95Ms": 1.443, + "rssMiB": 118.390625, + "heapMiB": 15.570831298828125, + "clientCpu": 94.27303032634143 + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "rounds": 3, + "errors": 0, + "rps": 40333.18035265429, + "cpuUs": 26.6550675787317, + "meanMs": 1.239196918385037, + "p95Ms": 1.452, + "rssMiB": 118.65625, + "heapMiB": 15.565216064453125, + "clientCpu": 94.25275892588486 + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "rounds": 3, + "errors": 0, + "rps": 40325.35506054461, + "cpuUs": 26.64934841265285, + "meanMs": 1.239323725370821, + "p95Ms": 1.465, + "rssMiB": 118.765625, + "heapMiB": 15.573158264160156, + "clientCpu": 94.2434451930859 + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 3, + "errors": 0, + "rps": 40437.68031478481, + "cpuUs": 26.36769031747732, + "meanMs": 1.2359639740118176, + "p95Ms": 1.433, + "rssMiB": 120.890625, + "heapMiB": 15.594345092773438, + "clientCpu": 94.68737257601792 + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 3, + "errors": 0, + "rps": 36924.90886257948, + "cpuUs": 29.07985346663298, + "meanMs": 1.3534895314270703, + "p95Ms": 1.512, + "rssMiB": 139.828125, + "heapMiB": 17.196517944335938, + "clientCpu": 89.60124260241173 + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "rounds": 3, + "errors": 0, + "rps": 37046.453524295895, + "cpuUs": 29.04311538807447, + "meanMs": 1.3490911543933832, + "p95Ms": 1.539, + "rssMiB": 139.453125, + "heapMiB": 17.269508361816406, + "clientCpu": 89.55848103157393 + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "rounds": 3, + "errors": 0, + "rps": 37109.875103725055, + "cpuUs": 28.93563418597761, + "meanMs": 1.3466948044424754, + "p95Ms": 1.55, + "rssMiB": 140.09375, + "heapMiB": 17.231307983398438, + "clientCpu": 89.59783002904932 + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "rounds": 3, + "errors": 0, + "rps": 37024.38274122101, + "cpuUs": 29.018250047244944, + "meanMs": 1.3498529812010516, + "p95Ms": 1.561, + "rssMiB": 139.484375, + "heapMiB": 17.196250915527344, + "clientCpu": 89.28832671882968 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 3, + "errors": 0, + "rps": 46623.195683076796, + "cpuUs": 22.81820390951649, + "meanMs": 1.071972279112348, + "p95Ms": 1.835, + "rssMiB": 111.1875, + "heapMiB": 11.992713928222656, + "clientCpu": 100.21979390383538 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 3, + "errors": 0, + "rps": 42356.025974832635, + "cpuUs": 25.256094587046988, + "meanMs": 1.1799551979373866, + "p95Ms": 1.455, + "rssMiB": 114.3125, + "heapMiB": 13.747901916503906, + "clientCpu": 96.75812272774402 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "rounds": 3, + "errors": 0, + "rps": 42361.23847691856, + "cpuUs": 25.22669781490396, + "meanMs": 1.179790371655115, + "p95Ms": 1.378, + "rssMiB": 114.109375, + "heapMiB": 13.716453552246094, + "clientCpu": 96.86689978109398 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "rounds": 3, + "errors": 0, + "rps": 42293.46591488464, + "cpuUs": 25.350203657162666, + "meanMs": 1.1817198897809036, + "p95Ms": 1.46, + "rssMiB": 114.625, + "heapMiB": 13.788360595703125, + "clientCpu": 96.74868594974748 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "headers", + "rounds": 3, + "errors": 0, + "rps": 41681.297724265016, + "cpuUs": 31.217825423091988, + "meanMs": 1.1987949939753697, + "p95Ms": 2.108, + "rssMiB": 271.453125, + "heapMiB": 12.205413818359375, + "clientCpu": 93.553789531449 + } + ], + "comparisons": [ + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "versusIsolatedControl": null, + "medianGainPercent": -0.3985069996347179, + "minGainPercent": -0.8715639488479532, + "maxGainPercent": -0.3500282506790908, + "medianCpuUsDelta": 0.1893348331141098, + "medianP95MsDelta": 0.018000000000000016, + "medianRssMiBDelta": -0.046875, + "medianHeapMiBDelta": 0.00176239013671875, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": -0.8715639488479532, + "cpuUsDelta": 0.30731747241160434, + "p95MsDelta": 0.02100000000000013, + "rssMiBDelta": 0.453125, + "heapMiBDelta": 0.00176239013671875 + }, + { + "round": 2, + "throughputPercent": -0.3500282506790908, + "cpuUsDelta": 0.1893348331141098, + "p95MsDelta": -0.010000000000000009, + "rssMiBDelta": -0.046875, + "heapMiBDelta": -0.016082763671875 + }, + { + "round": 3, + "throughputPercent": -0.3985069996347179, + "cpuUsDelta": 0.1665058396707053, + "p95MsDelta": 0.018000000000000016, + "rssMiBDelta": -0.921875, + "heapMiBDelta": 0.01175689697265625 + } + ] + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "versusIsolatedControl": null, + "medianGainPercent": -0.3449269662560206, + "minGainPercent": -0.8073641422034816, + "maxGainPercent": 0.009848569008141794, + "medianCpuUsDelta": 0.11430018676562526, + "medianP95MsDelta": 0.006000000000000005, + "medianRssMiBDelta": 0.078125, + "medianHeapMiBDelta": 0.02092742919921875, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": -0.8073641422034816, + "cpuUsDelta": 0.2899784336315534, + "p95MsDelta": -0.006000000000000005, + "rssMiBDelta": 0.71875, + "heapMiBDelta": 0.02092742919921875 + }, + { + "round": 2, + "throughputPercent": -0.3449269662560206, + "cpuUsDelta": 0.11430018676562526, + "p95MsDelta": 0.020999999999999908, + "rssMiBDelta": 0.015625, + "heapMiBDelta": 0.02245330810546875 + }, + { + "round": 3, + "throughputPercent": 0.009848569008141794, + "cpuUsDelta": -0.017179047785653268, + "p95MsDelta": 0.006000000000000005, + "rssMiBDelta": 0.078125, + "heapMiBDelta": -0.04497528076171875 + } + ] + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "versusIsolatedControl": null, + "medianGainPercent": 0.6065668517817757, + "minGainPercent": -0.03144875464667907, + "maxGainPercent": 1.0542744692490613, + "medianCpuUsDelta": -0.22953385327182474, + "medianP95MsDelta": -0.0029999999999998916, + "medianRssMiBDelta": 0.421875, + "medianHeapMiBDelta": -0.01079559326171875, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": 1.0542744692490613, + "cpuUsDelta": -0.3241673238287177, + "p95MsDelta": 0.0030000000000001137, + "rssMiBDelta": 0.984375, + "heapMiBDelta": -0.01163482666015625 + }, + { + "round": 2, + "throughputPercent": -0.03144875464667907, + "cpuUsDelta": 0.07518591238183348, + "p95MsDelta": -0.03400000000000003, + "rssMiBDelta": -0.328125, + "heapMiBDelta": 0.0668182373046875 + }, + { + "round": 3, + "throughputPercent": 0.6065668517817757, + "cpuUsDelta": -0.22953385327182474, + "p95MsDelta": -0.0029999999999998916, + "rssMiBDelta": 0.421875, + "heapMiBDelta": -0.01079559326171875 + } + ] + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "versusIsolatedControl": null, + "medianGainPercent": 0.3560631237445877, + "minGainPercent": -0.7346183270806272, + "maxGainPercent": 0.8987908969923408, + "medianCpuUsDelta": -0.19351845567631898, + "medianP95MsDelta": -0.006000000000000005, + "medianRssMiBDelta": -0.421875, + "medianHeapMiBDelta": 0.0387725830078125, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": 0.8987908969923408, + "cpuUsDelta": -0.19351845567631898, + "p95MsDelta": -0.139, + "rssMiBDelta": -0.421875, + "heapMiBDelta": 0.0432891845703125 + }, + { + "round": 2, + "throughputPercent": 0.3560631237445877, + "cpuUsDelta": -0.26547105784930025, + "p95MsDelta": 0.026000000000000023, + "rssMiBDelta": 0.046875, + "heapMiBDelta": -0.03350830078125 + }, + { + "round": 3, + "throughputPercent": -0.7346183270806272, + "cpuUsDelta": 0.17442346975206036, + "p95MsDelta": -0.006000000000000005, + "rssMiBDelta": -0.640625, + "heapMiBDelta": 0.0387725830078125 + } + ] + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "versusIsolatedControl": null, + "medianGainPercent": 0.6568885570824579, + "minGainPercent": -1.6466441937076581, + "maxGainPercent": 0.707553936798333, + "medianCpuUsDelta": -0.25669712715065174, + "medianP95MsDelta": 0.0029999999999998916, + "medianRssMiBDelta": -0.296875, + "medianHeapMiBDelta": 0.0270233154296875, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": 0.6568885570824579, + "cpuUsDelta": -0.25669712715065174, + "p95MsDelta": -0.1260000000000001, + "rssMiBDelta": -0.390625, + "heapMiBDelta": 0.05682373046875 + }, + { + "round": 2, + "throughputPercent": 0.707553936798333, + "cpuUsDelta": -0.3021881907978532, + "p95MsDelta": 0.0029999999999998916, + "rssMiBDelta": 0.390625, + "heapMiBDelta": 0.0043792724609375 + }, + { + "round": 3, + "throughputPercent": -1.6466441937076581, + "cpuUsDelta": 0.46945216351758745, + "p95MsDelta": 0.030999999999999917, + "rssMiBDelta": -0.296875, + "heapMiBDelta": 0.0270233154296875 + } + ] + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "versusIsolatedControl": null, + "medianGainPercent": 0.6142741836117294, + "minGainPercent": 0.1585753509941501, + "maxGainPercent": 0.6373594857589371, + "medianCpuUsDelta": -0.1381480287855119, + "medianP95MsDelta": 0, + "medianRssMiBDelta": 0, + "medianHeapMiBDelta": 0.02266693115234375, + "allRoundsPositive": true, + "pairs": [ + { + "round": 1, + "throughputPercent": 0.6373594857589371, + "cpuUsDelta": -0.26650959330230606, + "p95MsDelta": -0.10299999999999998, + "rssMiBDelta": -0.046875, + "heapMiBDelta": 0.02266693115234375 + }, + { + "round": 2, + "throughputPercent": 0.1585753509941501, + "cpuUsDelta": -0.1381480287855119, + "p95MsDelta": 0.038999999999999924, + "rssMiBDelta": 0.109375, + "heapMiBDelta": 0.01232147216796875 + }, + { + "round": 3, + "throughputPercent": 0.6142741836117294, + "cpuUsDelta": -0.03395879091180021, + "p95MsDelta": 0, + "rssMiBDelta": 0, + "heapMiBDelta": 0.0967254638671875 + } + ] + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "hoist", + "versusIsolatedControl": null, + "medianGainPercent": 0.24659856827360382, + "minGainPercent": -0.3224990321319954, + "maxGainPercent": 0.8744862419076904, + "medianCpuUsDelta": -0.002287125222256492, + "medianP95MsDelta": 0.026000000000000023, + "medianRssMiBDelta": -0.375, + "medianHeapMiBDelta": 0.0749664306640625, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": 0.24659856827360382, + "cpuUsDelta": -0.002287125222256492, + "p95MsDelta": 0.026000000000000023, + "rssMiBDelta": -0.890625, + "heapMiBDelta": 0.0749664306640625 + }, + { + "round": 2, + "throughputPercent": -0.3224990321319954, + "cpuUsDelta": 0.2534105076642419, + "p95MsDelta": 0.03699999999999992, + "rssMiBDelta": 1.53125, + "heapMiBDelta": 0.02350616455078125 + }, + { + "round": 3, + "throughputPercent": 0.8744862419076904, + "cpuUsDelta": -0.20829482974746938, + "p95MsDelta": 0.006000000000000005, + "rssMiBDelta": -0.375, + "heapMiBDelta": 0.07904815673828125 + } + ] + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "versusIsolatedControl": null, + "medianGainPercent": -0.13065465323736092, + "minGainPercent": -0.15185639448280774, + "maxGainPercent": 1.7280002882141599, + "medianCpuUsDelta": -0.05019987694035777, + "medianP95MsDelta": 0.038999999999999924, + "medianRssMiBDelta": 0.3125, + "medianHeapMiBDelta": 0.02458953857421875, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": -0.13065465323736092, + "cpuUsDelta": -0.05019987694035777, + "p95MsDelta": 0.038999999999999924, + "rssMiBDelta": 0.3125, + "heapMiBDelta": 0.0088653564453125 + }, + { + "round": 2, + "throughputPercent": -0.15185639448280774, + "cpuUsDelta": 0.14592930556738182, + "p95MsDelta": 0.05699999999999994, + "rssMiBDelta": 1.21875, + "heapMiBDelta": 0.02458953857421875 + }, + { + "round": 3, + "throughputPercent": 1.7280002882141599, + "cpuUsDelta": -0.4578469718845355, + "p95MsDelta": 0.017000000000000126, + "rssMiBDelta": 0.265625, + "heapMiBDelta": 0.07723236083984375 + } + ] + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "versusIsolatedControl": null, + "medianGainPercent": 0.09769287957988038, + "minGainPercent": -0.3676083958715104, + "maxGainPercent": 0.2693950552775437, + "medianCpuUsDelta": -0.023621457954721592, + "medianP95MsDelta": 0.04100000000000015, + "medianRssMiBDelta": 0.84375, + "medianHeapMiBDelta": -0.010467529296875, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": 0.2693950552775437, + "cpuUsDelta": -0.06160341938803526, + "p95MsDelta": 0.03400000000000003, + "rssMiBDelta": -0.53125, + "heapMiBDelta": -0.01631927490234375 + }, + { + "round": 2, + "throughputPercent": -0.3676083958715104, + "cpuUsDelta": 0.17129026085304488, + "p95MsDelta": 0.04899999999999993, + "rssMiBDelta": 0.84375, + "heapMiBDelta": -0.010467529296875 + }, + { + "round": 3, + "throughputPercent": 0.09769287957988038, + "cpuUsDelta": -0.023621457954721592, + "p95MsDelta": 0.04100000000000015, + "rssMiBDelta": 1.03125, + "heapMiBDelta": 0.01796722412109375 + } + ] + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "assign", + "versusIsolatedControl": null, + "medianGainPercent": 0.15753035633294665, + "minGainPercent": -0.27493727372802645, + "maxGainPercent": 0.3471123566789913, + "medianCpuUsDelta": -0.09629301339098717, + "medianP95MsDelta": -0.03300000000000014, + "medianRssMiBDelta": -0.203125, + "medianHeapMiBDelta": -0.04505157470703125, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": 0.15753035633294665, + "cpuUsDelta": -0.10448994355588681, + "p95MsDelta": -0.08800000000000008, + "rssMiBDelta": -0.4375, + "heapMiBDelta": 0.07395172119140625 + }, + { + "round": 2, + "throughputPercent": -0.27493727372802645, + "cpuUsDelta": 0.127710141611594, + "p95MsDelta": -0.03300000000000014, + "rssMiBDelta": -0.203125, + "heapMiBDelta": -0.04505157470703125 + }, + { + "round": 3, + "throughputPercent": 0.3471123566789913, + "cpuUsDelta": -0.09629301339098717, + "p95MsDelta": 0.14700000000000002, + "rssMiBDelta": 0.4375, + "heapMiBDelta": -0.07346343994140625 + } + ] + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "sync", + "versusIsolatedControl": null, + "medianGainPercent": -0.1776709933091869, + "minGainPercent": -0.2695390381548979, + "maxGainPercent": 0.3958663251262484, + "medianCpuUsDelta": 0.12908335955327033, + "medianP95MsDelta": 0.02200000000000002, + "medianRssMiBDelta": 0.171875, + "medianHeapMiBDelta": 0.00580596923828125, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": -0.1776709933091869, + "cpuUsDelta": 0.12908335955327033, + "p95MsDelta": -0.006000000000000005, + "rssMiBDelta": 0.171875, + "heapMiBDelta": 0.00580596923828125 + }, + { + "round": 2, + "throughputPercent": -0.2695390381548979, + "cpuUsDelta": 0.16420684720596057, + "p95MsDelta": 0.04899999999999993, + "rssMiBDelta": 0.140625, + "heapMiBDelta": 0.0626983642578125 + }, + { + "round": 3, + "throughputPercent": 0.3958663251262484, + "cpuUsDelta": -0.12755400836916664, + "p95MsDelta": 0.02200000000000002, + "rssMiBDelta": 0.953125, + "heapMiBDelta": -0.001556396484375 + } + ] + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "headers", + "versusIsolatedControl": null, + "medianGainPercent": -1.2635603610128499, + "minGainPercent": -1.7178726698741875, + "maxGainPercent": -0.9960045355023817, + "medianCpuUsDelta": 5.8948345947970395, + "medianP95MsDelta": 0.661, + "medianRssMiBDelta": 157, + "medianHeapMiBDelta": -1.5581817626953125, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": -0.9960045355023817, + "cpuUsDelta": 5.830074222450335, + "p95MsDelta": 0.637, + "rssMiBDelta": 157, + "heapMiBDelta": -1.4940643310546875 + }, + { + "round": 2, + "throughputPercent": -1.7178726698741875, + "cpuUsDelta": 6.13543632734833, + "p95MsDelta": 0.6970000000000001, + "rssMiBDelta": 155.703125, + "heapMiBDelta": -1.5581817626953125 + }, + { + "round": 3, + "throughputPercent": -1.2635603610128499, + "cpuUsDelta": 5.8948345947970395, + "p95MsDelta": 0.661, + "rssMiBDelta": 160.625, + "heapMiBDelta": -1.584503173828125 + } + ] + } + ] + }, + { + "input": "benchmarks/results/experiments/screen-reply.json", + "raw": { + "startedAt": "2026-10-27T16:18:25.113Z", + "commit": "cf3e4f83ecc7c366304ed47e6c00c43cdc40b5c1", + "harnessSha256": { + "fixture.mjs": "064fd8eb68b46d1b567bbea84b7655948def3687c5f9e68438c1bfdc511259e1", + "load.mjs": "ce51b4f707385179b4c69bfda7babe2534083005280e9819ddd207f97dafda5a", + "server.mjs": "d3d963157c8aeed9b1662a8bb4c33a49c6e1c555375b45981e80a43a9d18e72e", + "run.mjs": "0330171024592b77ca41a4779cefa8fd68ffa71478d284d380d70ebc4af4b3e4" + }, + "environment": { + "node": "v24.22.1", + "os": "Darwin 27.2.0 arm64", + "platform": "darwin", + "cpu": "Apple M2", + "logicalCpus": 8, + "availableParallelism": 8, + "systemMemoryBytes": 17179869184, + "cpuMax": null, + "memoryMax": null, + "versions": { + "erest": "3.4.0", + "packages/erest-express/": "3.4.0", + "packages/erest-koa/": "3.4.0", + "packages/erest-leizmweb/": "3.4.0", + "node_modules/express/": "5.2.1", + "node_modules/koa/": "3.0.0", + "node_modules/koa-router/": "13.1.1", + "node_modules/koa-bodyparser/": "4.4.1", + "node_modules/@leizm/web/": "2.7.3", + "node_modules/zod/": "4.4.3", + "packages/erest-h3/": "3.4.0", + "node_modules/h3/": "2.0.8" + } + }, + "config": { + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "scenarios": [ + "post" + ], + "concurrency": [ + 50 + ], + "rounds": 3, + "durationMs": 3000, + "warmupMs": 2000, + "serverCpu": null + }, + "experiments": { + "commit": "cf3e4f83ecc7c366304ed47e6c00c43cdc40b5c1", + "prepareSha256": "166b0a71c3e9a81ebb79b7d9f48758d9c688d1c3f21f6d631c39de90c886da59", + "baseline": { + "dist/lib/api.js": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "dist/lib/adapters/utils.js": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "dist/lib/params.js": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "packages/erest-express/dist/index.js": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "packages/erest-koa/dist/index.js": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "packages/erest-leizmweb/dist/index.js": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "packages/erest-h3/dist/index.js": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0" + }, + "variants": { + "node-headers": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/node-headers", + "frameworks": [ + "h3" + ], + "patches": [ + "node-headers" + ], + "descriptions": [ + "Node-only diagnostic: copy IncomingMessage headers instead of converting Web Headers." + ], + "caveats": [ + "Not portable; raw array/duplicate-header normalization and mutations to Web Headers can differ. This is an attribution experiment, not a shippable replacement." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "6c8fc2556f842b23d4575f40c5c7ae686ff180e2c6232a2ffca18d2c582baf5c" + } + } + }, + "reply": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/reply", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [ + "reply" + ], + "descriptions": [ + "Use per-request Reply instances with shared prototype methods instead of four per-request method closures." + ], + "caveats": [ + "Prototype/enumerability and detached method calls differ. Requires a compatibility decision and broad Reply tests before shipping." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "d429ffa67ffa89ac2c2fe8caf785170b236ea74f88930b5ef31333f5786ce454" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "65ed901e1f72f8a9ac1060b736aa82d3bd86b7a5b5c227b691faa8c12093b134" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "00a0977f107947a232e0b457b1e3c0bdcebd2b3275ce6db19defded74ae833ef" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "6ae2c3b82c298fb7ac9cc9b0784f7aa2b4cb5dc2b86a750b2ab2dd2d42e16bd4" + } + } + }, + "hoist": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/hoist", + "frameworks": [ + "express", + "koa", + "leizmweb" + ], + "patches": [ + "hoist" + ], + "descriptions": [ + "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly." + ], + "caveats": [ + "Must retain existing hook binding semantics and all layered/requiredOneOf behavior." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "5e738ee1b62fee37841aa7a176fba29d64ec8bcf84ae7b875c153470177626d3" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "15cc07b414ac5d4393170ce4cc5fd3ce8adfee1abdb6e417b579dc105c0a9bee" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "a6b044ae94621d9d237613bcaf89c0ba3ab5e0289aa6ef695887c6168a8082f9" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" + } + } + }, + "assign": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/assign", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [ + "assign" + ], + "descriptions": [ + "Replace four object spreads for flat params with Object.assign." + ], + "caveats": [ + "Diagnostic only: Object.assign treats an own __proto__ key differently; not safe to ship unchanged." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "f3537bce8dfaf13e39757a1a43428466f8d4a50fc3cd83ab2e85c3ba29f7cf86" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "f42d3219cd2f04c72167bddb5c96a9e442860d4bbca0173d465386dc293dca48" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "72e2f5ae67dc2f7afb42032c8628ca9e61eea2f9e8ff21a2296ffe18a2a8ce58" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "f2a0e652e0405aaa9b1e23d2715b39c07d638b2853971c69aa7c1ab1c4d86780" + } + } + }, + "sync": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/sync", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [ + "sync" + ], + "descriptions": [ + "Avoid unconditional async typed-handler wrapper; resolve async results via a shared finish callback." + ], + "caveats": [ + "Check rejection, response schemas, envelope return bookkeeping and async onion middleware before shipping." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "d5aebe36f501e7b13f787340b16746bc335ec5106d1caa7bfde605a483ef7bd0" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" + } + } + }, + "headers": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/headers", + "frameworks": [ + "h3" + ], + "patches": [ + "headers" + ], + "descriptions": [ + "Lazily materialize H3 ctx.headers on first access, cache the object and keep a setter." + ], + "caveats": [ + "Header snapshot timing/property descriptors differ; reject as a drop-in optimization without an API decision." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "00e65ed2af97fe50a1937ca1ef49645a9911b57839bfe9ed400468d2655d8b78" + } + } + } + } + }, + "selectedVariants": [ + "reply", + "node-headers" + ], + "samples": [ + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 101758, + "errors": 0, + "elapsedMs": 3001.353083, + "rps": 33904.0416725272, + "latencyMs": { + "mean": 1.4740323158375657, + "p50": 1.403, + "p95": 1.878, + "p99": 2.838, + "max": 6.837540999999874 + }, + "clientCpuPercent": 89.91964375289064, + "serverCpuPercent": 106.7073886174675, + "serverCpuUsPerRequest": 31.48169185715128, + "serverRssMiB": 121.359375, + "serverRetainedHeapMiB": 13.987510681152344, + "idleRssMiB": 81.984375, + "server": { + "type": "stats", + "elapsedMs": 3002.14825, + "cpu": { + "user": 2701973, + "system": 501541 + }, + "memory": { + "rss": 127254528, + "heapTotal": 38633472, + "heapUsed": 20493408, + "external": 4340633, + "arrayBuffers": 450378 + }, + "retainedMemory": { + "rss": 127516672, + "heapTotal": 34701312, + "heapUsed": 14666968, + "external": 4340633, + "arrayBuffers": 277690 + }, + "maxRssKiB": 124528 + }, + "idleMemory": { + "rss": 85966848, + "heapTotal": 31293440, + "heapUsed": 12373352, + "external": 4167902, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 95626, + "errors": 0, + "elapsedMs": 3001.5476659999995, + "rps": 31858.89768908305, + "latencyMs": { + "mean": 1.5687296158053294, + "p50": 1.504, + "p95": 1.884, + "p99": 3.014, + "max": 6.872166999999536 + }, + "clientCpuPercent": 79.54676272663933, + "serverCpuPercent": 106.45863798434789, + "serverCpuUsPerRequest": 33.430698763934494, + "serverRssMiB": 166.375, + "serverRetainedHeapMiB": 15.7164306640625, + "idleRssMiB": 85.8125, + "server": { + "type": "stats", + "elapsedMs": 3002.897708, + "cpu": { + "user": 2704761, + "system": 492083 + }, + "memory": { + "rss": 174456832, + "heapTotal": 92372992, + "heapUsed": 41266632, + "external": 4483322, + "arrayBuffers": 515131 + }, + "retainedMemory": { + "rss": 174489600, + "heapTotal": 91062272, + "heapUsed": 16479872, + "external": 4483322, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170400 + }, + "idleMemory": { + "rss": 89980928, + "heapTotal": 33652736, + "heapUsed": 14022104, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 1, + "requests": 94974, + "errors": 0, + "elapsedMs": 3001.4867919999997, + "rps": 31642.318151503634, + "latencyMs": { + "mean": 1.5794838748394002, + "p50": 1.516, + "p95": 1.912, + "p99": 3.034, + "max": 6.5836249999993015 + }, + "clientCpuPercent": 79.33301610210785, + "serverCpuPercent": 106.41599573939047, + "serverCpuUsPerRequest": 33.64487122791501, + "serverRssMiB": 167.015625, + "serverRetainedHeapMiB": 15.688346862792969, + "idleRssMiB": 85.453125, + "server": { + "type": "stats", + "elapsedMs": 3002.732792, + "cpu": { + "user": 2701663, + "system": 493725 + }, + "memory": { + "rss": 175128576, + "heapTotal": 92635136, + "heapUsed": 41946856, + "external": 4552742, + "arrayBuffers": 586923 + }, + "retainedMemory": { + "rss": 175177728, + "heapTotal": 90275840, + "heapUsed": 16450424, + "external": 4552742, + "arrayBuffers": 277690 + }, + "maxRssKiB": 171072 + }, + "idleMemory": { + "rss": 89604096, + "heapTotal": 33390592, + "heapUsed": 14026248, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 125794, + "errors": 0, + "elapsedMs": 3001.160582999997, + "rps": 41915.11800886535, + "latencyMs": { + "mean": 1.1924132269981422, + "p50": 1.133, + "p95": 1.435, + "p99": 2.306, + "max": 6.011500000000524 + }, + "clientCpuPercent": 96.04734302882862, + "serverCpuPercent": 107.42800073318071, + "serverCpuUsPerRequest": 25.63668378460022, + "serverRssMiB": 114.8125, + "serverRetainedHeapMiB": 13.949111938476562, + "idleRssMiB": 81.796875, + "server": { + "type": "stats", + "elapsedMs": 3001.955708, + "cpu": { + "user": 2648609, + "system": 576332 + }, + "memory": { + "rss": 120389632, + "heapTotal": 34177024, + "heapUsed": 20648448, + "external": 4215169, + "arrayBuffers": 307899 + }, + "retainedMemory": { + "rss": 120422400, + "heapTotal": 34177024, + "heapUsed": 14626704, + "external": 4215169, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117600 + }, + "idleMemory": { + "rss": 85770240, + "heapTotal": 31555584, + "heapUsed": 12366496, + "external": 4184917, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 122425, + "errors": 0, + "elapsedMs": 3001.1968339999985, + "rps": 40792.05955873005, + "latencyMs": { + "mean": 1.2251699432305498, + "p50": 1.165, + "p95": 1.436, + "p99": 2.356, + "max": 5.859208000001672 + }, + "clientCpuPercent": 94.65603747868013, + "serverCpuPercent": 107.55689307943253, + "serverCpuUsPerRequest": 26.37426179293445, + "serverRssMiB": 118.96875, + "serverRetainedHeapMiB": 15.526176452636719, + "idleRssMiB": 86.5, + "server": { + "type": "stats", + "elapsedMs": 3002.010292, + "cpu": { + "user": 2655188, + "system": 573681 + }, + "memory": { + "rss": 124747776, + "heapTotal": 36012032, + "heapUsed": 18999600, + "external": 4253922, + "arrayBuffers": 285731 + }, + "retainedMemory": { + "rss": 124764160, + "heapTotal": 36012032, + "heapUsed": 16280376, + "external": 4253922, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121840 + }, + "idleMemory": { + "rss": 90701824, + "heapTotal": 32866304, + "heapUsed": 13960544, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 1, + "requests": 123529, + "errors": 0, + "elapsedMs": 3001.1547500000015, + "rps": 41160.48997473387, + "latencyMs": { + "mean": 1.2142085592856777, + "p50": 1.156, + "p95": 1.431, + "p99": 2.345, + "max": 6.44354100000055 + }, + "clientCpuPercent": 94.75889238967096, + "serverCpuPercent": 107.85105602652848, + "serverCpuUsPerRequest": 26.20823450363882, + "serverRssMiB": 118.796875, + "serverRetainedHeapMiB": 15.635826110839844, + "idleRssMiB": 86.6875, + "server": { + "type": "stats", + "elapsedMs": 3001.8037090000003, + "cpu": { + "user": 2670790, + "system": 566687 + }, + "memory": { + "rss": 124567552, + "heapTotal": 36012032, + "heapUsed": 17643408, + "external": 4243526, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 124567552, + "heapTotal": 36012032, + "heapUsed": 16395352, + "external": 4243526, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121648 + }, + "idleMemory": { + "rss": 90898432, + "heapTotal": 33128448, + "heapUsed": 13965264, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 124209, + "errors": 0, + "elapsedMs": 3001.2063749999943, + "rps": 41386.357510985974, + "latencyMs": { + "mean": 1.2075836249305614, + "p50": 1.145, + "p95": 1.399, + "p99": 2.324, + "max": 5.109415999999328 + }, + "clientCpuPercent": 95.73606880000065, + "serverCpuPercent": 106.17241440987387, + "serverCpuUsPerRequest": 25.65988776980734, + "serverRssMiB": 120.53125, + "serverRetainedHeapMiB": 15.610618591308594, + "idleRssMiB": 84.484375, + "server": { + "type": "stats", + "elapsedMs": 3001.8993330000003, + "cpu": { + "user": 2617499, + "system": 569690 + }, + "memory": { + "rss": 126386176, + "heapTotal": 38912000, + "heapUsed": 24585224, + "external": 4232464, + "arrayBuffers": 301915 + }, + "retainedMemory": { + "rss": 126418944, + "heapTotal": 38387712, + "heapUsed": 16368920, + "external": 4232464, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123456 + }, + "idleMemory": { + "rss": 88588288, + "heapTotal": 33931264, + "heapUsed": 14168496, + "external": 4208196, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 112270, + "errors": 0, + "elapsedMs": 3001.267249999997, + "rps": 37407.53176845551, + "latencyMs": { + "mean": 1.3359732180724961, + "p50": 1.277, + "p95": 1.517, + "p99": 2.585, + "max": 7.6258749999979045 + }, + "clientCpuPercent": 90.2693020756483, + "serverCpuPercent": 107.23179108848429, + "serverCpuUsPerRequest": 28.67299367595974, + "serverRssMiB": 139.015625, + "serverRetainedHeapMiB": 17.23480987548828, + "idleRssMiB": 88.46875, + "server": { + "type": "stats", + "elapsedMs": 3002.0173750000004, + "cpu": { + "user": 2653499, + "system": 565618 + }, + "memory": { + "rss": 145768448, + "heapTotal": 57786368, + "heapUsed": 23086736, + "external": 4341496, + "arrayBuffers": 350026 + }, + "retainedMemory": { + "rss": 145784832, + "heapTotal": 56999936, + "heapUsed": 18072008, + "external": 4341496, + "arrayBuffers": 343226 + }, + "maxRssKiB": 142368 + }, + "idleMemory": { + "rss": 92766208, + "heapTotal": 34979840, + "heapUsed": 15782264, + "external": 4400189, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 1, + "requests": 112122, + "errors": 0, + "elapsedMs": 3001.2731249999997, + "rps": 37358.14613673323, + "latencyMs": { + "mean": 1.3378279333761678, + "p50": 1.278, + "p95": 1.556, + "p99": 2.575, + "max": 5.757916999995359 + }, + "clientCpuPercent": 90.17239975452085, + "serverCpuPercent": 107.26373122564547, + "serverCpuUsPerRequest": 28.719671429335904, + "serverRssMiB": 139.171875, + "serverRetainedHeapMiB": 17.182777404785156, + "idleRssMiB": 88.40625, + "server": { + "type": "stats", + "elapsedMs": 3002.046417, + "cpu": { + "user": 2647907, + "system": 572200 + }, + "memory": { + "rss": 145932288, + "heapTotal": 57262080, + "heapUsed": 33141336, + "external": 4409844, + "arrayBuffers": 420746 + }, + "retainedMemory": { + "rss": 145965056, + "heapTotal": 56999936, + "heapUsed": 18017448, + "external": 4409844, + "arrayBuffers": 355473 + }, + "maxRssKiB": 142544 + }, + "idleMemory": { + "rss": 92700672, + "heapTotal": 35241984, + "heapUsed": 15782352, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 141328, + "errors": 0, + "elapsedMs": 3000.932415999996, + "rps": 47094.69605062915, + "latencyMs": { + "mean": 1.061281811226363, + "p50": 0.947, + "p95": 1.85, + "p99": 1.989, + "max": 4.963457999998354 + }, + "clientCpuPercent": 100.27043541389784, + "serverCpuPercent": 106.3919008963715, + "serverCpuUsPerRequest": 22.595862108004077, + "serverRssMiB": 111.125, + "serverRetainedHeapMiB": 12.046852111816406, + "idleRssMiB": 75, + "server": { + "type": "stats", + "elapsedMs": 3001.5705829999997, + "cpu": { + "user": 2480753, + "system": 712675 + }, + "memory": { + "rss": 116523008, + "heapTotal": 31735808, + "heapUsed": 13654528, + "external": 4178473, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 116555776, + "heapTotal": 31735808, + "heapUsed": 12632040, + "external": 4178473, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113824 + }, + "idleMemory": { + "rss": 78643200, + "heapTotal": 20987904, + "heapUsed": 10640000, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 130161, + "errors": 0, + "elapsedMs": 3001.158083000002, + "rps": 43370.25788054761, + "latencyMs": { + "mean": 1.152333824640259, + "p50": 1.091, + "p95": 1.421, + "p99": 2.231, + "max": 6.678874999997788 + }, + "clientCpuPercent": 97.82883536295205, + "serverCpuPercent": 106.88521964051118, + "serverCpuUsPerRequest": 24.650963038083603, + "serverRssMiB": 113.890625, + "serverRetainedHeapMiB": 13.704490661621094, + "idleRssMiB": 80.546875, + "server": { + "type": "stats", + "elapsedMs": 3001.9061669999996, + "cpu": { + "user": 2592410, + "system": 616184 + }, + "memory": { + "rss": 119422976, + "heapTotal": 34095104, + "heapUsed": 19664384, + "external": 4295235, + "arrayBuffers": 303765 + }, + "retainedMemory": { + "rss": 119422976, + "heapTotal": 34095104, + "heapUsed": 14370200, + "external": 4295235, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116624 + }, + "idleMemory": { + "rss": 84459520, + "heapTotal": 31473664, + "heapUsed": 12359008, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 1, + "requests": 130080, + "errors": 0, + "elapsedMs": 3001.116374999998, + "rps": 43343.870662129884, + "latencyMs": { + "mean": 1.1530165504689613, + "p50": 1.092, + "p95": 1.463, + "p99": 2.245, + "max": 9.753624999997555 + }, + "clientCpuPercent": 97.75805511707297, + "serverCpuPercent": 106.91098290912004, + "serverCpuUsPerRequest": 24.67214790897909, + "serverRssMiB": 114.765625, + "serverRetainedHeapMiB": 13.697860717773438, + "idleRssMiB": 80.6875, + "server": { + "type": "stats", + "elapsedMs": 3001.8927079999994, + "cpu": { + "user": 2588467, + "system": 620886 + }, + "memory": { + "rss": 120340480, + "heapTotal": 34881536, + "heapUsed": 21217792, + "external": 4303441, + "arrayBuffers": 314343 + }, + "retainedMemory": { + "rss": 120373248, + "heapTotal": 34095104, + "heapUsed": 14363248, + "external": 4303441, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117552 + }, + "idleMemory": { + "rss": 84606976, + "heapTotal": 30949376, + "heapUsed": 12365456, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 1, + "requests": 138192, + "errors": 0, + "elapsedMs": 3001.0239160000056, + "rps": 46048.28347525896, + "latencyMs": { + "mean": 1.0853443055386283, + "p50": 1.002, + "p95": 1.956, + "p99": 2.126, + "max": 6.1131250000034925 + }, + "clientCpuPercent": 99.89517191171876, + "serverCpuPercent": 106.68758692514103, + "serverCpuUsPerRequest": 23.174358863031145, + "serverRssMiB": 115.296875, + "serverRetainedHeapMiB": 13.6630859375, + "idleRssMiB": 80.96875, + "server": { + "type": "stats", + "elapsedMs": 3001.765334, + "cpu": { + "user": 2507659, + "system": 694852 + }, + "memory": { + "rss": 120897536, + "heapTotal": 33832960, + "heapUsed": 18730512, + "external": 4289509, + "arrayBuffers": 300411 + }, + "retainedMemory": { + "rss": 120897536, + "heapTotal": 33832960, + "heapUsed": 14326784, + "external": 4289509, + "arrayBuffers": 277690 + }, + "maxRssKiB": 118064 + }, + "idleMemory": { + "rss": 84901888, + "heapTotal": 31211520, + "heapUsed": 12361232, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 122918, + "errors": 0, + "elapsedMs": 3001.166041999997, + "rps": 40956.74757071642, + "latencyMs": { + "mean": 1.2203168658048573, + "p50": 1.158, + "p95": 1.456, + "p99": 2.337, + "max": 6.41895900000236 + }, + "clientCpuPercent": 95.04269207641536, + "serverCpuPercent": 107.95620943102692, + "serverCpuUsPerRequest": 26.365455018793018, + "serverRssMiB": 118.78125, + "serverRetainedHeapMiB": 15.557518005371094, + "idleRssMiB": 86.453125, + "server": { + "type": "stats", + "elapsedMs": 3001.94775, + "cpu": { + "user": 2663475, + "system": 577314 + }, + "memory": { + "rss": 124551168, + "heapTotal": 36012032, + "heapUsed": 20640520, + "external": 4262898, + "arrayBuffers": 294707 + }, + "retainedMemory": { + "rss": 124583936, + "heapTotal": 36012032, + "heapUsed": 16313240, + "external": 4262898, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121664 + }, + "idleMemory": { + "rss": 90652672, + "heapTotal": 32866304, + "heapUsed": 13961008, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 2, + "requests": 123214, + "errors": 0, + "elapsedMs": 3001.1958749999903, + "rps": 41054.96779679547, + "latencyMs": { + "mean": 1.2173162738568768, + "p50": 1.155, + "p95": 1.456, + "p99": 2.353, + "max": 8.599667000002228 + }, + "clientCpuPercent": 95.02385444935376, + "serverCpuPercent": 108.01347452204254, + "serverCpuUsPerRequest": 26.314866817082475, + "serverRssMiB": 118.796875, + "serverRetainedHeapMiB": 15.626991271972656, + "idleRssMiB": 86.59375, + "server": { + "type": "stats", + "elapsedMs": 3001.8106669999997, + "cpu": { + "user": 2659285, + "system": 583075 + }, + "memory": { + "rss": 124567552, + "heapTotal": 36012032, + "heapUsed": 21566368, + "external": 4266238, + "arrayBuffers": 300419 + }, + "retainedMemory": { + "rss": 124567552, + "heapTotal": 36012032, + "heapUsed": 16386088, + "external": 4266238, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121648 + }, + "idleMemory": { + "rss": 90800128, + "heapTotal": 33128448, + "heapUsed": 13965960, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 126054, + "errors": 0, + "elapsedMs": 3001.141791999995, + "rps": 42002.014145421694, + "latencyMs": { + "mean": 1.1898854058022599, + "p50": 1.133, + "p95": 1.491, + "p99": 2.3, + "max": 5.512708000009297 + }, + "clientCpuPercent": 96.28885271942542, + "serverCpuPercent": 107.37532568060682, + "serverCpuUsPerRequest": 25.57026353784886, + "serverRssMiB": 115.1875, + "serverRetainedHeapMiB": 13.993972778320312, + "idleRssMiB": 81.71875, + "server": { + "type": "stats", + "elapsedMs": 3001.8386250000003, + "cpu": { + "user": 2631313, + "system": 591921 + }, + "memory": { + "rss": 120782848, + "heapTotal": 34177024, + "heapUsed": 17970176, + "external": 4197897, + "arrayBuffers": 290627 + }, + "retainedMemory": { + "rss": 120799232, + "heapTotal": 34177024, + "heapUsed": 14673744, + "external": 4197897, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117968 + }, + "idleMemory": { + "rss": 85688320, + "heapTotal": 31555584, + "heapUsed": 12366608, + "external": 4184917, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 112814, + "errors": 0, + "elapsedMs": 3001.2526249999937, + "rps": 37588.97170477285, + "latencyMs": { + "mean": 1.3295399233251566, + "p50": 1.272, + "p95": 1.518, + "p99": 2.573, + "max": 9.777792000008048 + }, + "clientCpuPercent": 90.1498919971792, + "serverCpuPercent": 107.27611059363657, + "serverCpuUsPerRequest": 28.546607690534863, + "serverRssMiB": 140.421875, + "serverRetainedHeapMiB": 17.186782836914062, + "idleRssMiB": 88.5, + "server": { + "type": "stats", + "elapsedMs": 3002.0262499999994, + "cpu": { + "user": 2640263, + "system": 580194 + }, + "memory": { + "rss": 147243008, + "heapTotal": 58834944, + "heapUsed": 32293048, + "external": 4402839, + "arrayBuffers": 411369 + }, + "retainedMemory": { + "rss": 147259392, + "heapTotal": 58572800, + "heapUsed": 18021648, + "external": 4402839, + "arrayBuffers": 346497 + }, + "maxRssKiB": 143808 + }, + "idleMemory": { + "rss": 92798976, + "heapTotal": 34979840, + "heapUsed": 15777672, + "external": 4400189, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 2, + "requests": 112729, + "errors": 0, + "elapsedMs": 3001.259082999997, + "rps": 37560.569375209816, + "latencyMs": { + "mean": 1.3306319674351803, + "p50": 1.27, + "p95": 1.519, + "p99": 2.589, + "max": 8.290416999996523 + }, + "clientCpuPercent": 90.12557480696519, + "serverCpuPercent": 107.29615224351176, + "serverCpuUsPerRequest": 28.572780739649957, + "serverRssMiB": 138.890625, + "serverRetainedHeapMiB": 17.20008087158203, + "idleRssMiB": 88.25, + "server": { + "type": "stats", + "elapsedMs": 3001.9538749999997, + "cpu": { + "user": 2641504, + "system": 579477 + }, + "memory": { + "rss": 145637376, + "heapTotal": 56999936, + "heapUsed": 34317816, + "external": 4421812, + "arrayBuffers": 432714 + }, + "retainedMemory": { + "rss": 145653760, + "heapTotal": 56999936, + "heapUsed": 18035592, + "external": 4421812, + "arrayBuffers": 358186 + }, + "maxRssKiB": 142240 + }, + "idleMemory": { + "rss": 92536832, + "heapTotal": 35241984, + "heapUsed": 15781792, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 124519, + "errors": 0, + "elapsedMs": 3001.1872920000023, + "rps": 41489.91311935753, + "latencyMs": { + "mean": 1.204572934981812, + "p50": 1.146, + "p95": 1.401, + "p99": 2.331, + "max": 6.041708999997354 + }, + "clientCpuPercent": 95.53772294195086, + "serverCpuPercent": 106.37598073234834, + "serverCpuUsPerRequest": 25.644134630056456, + "serverRssMiB": 120.828125, + "serverRetainedHeapMiB": 15.666061401367188, + "idleRssMiB": 84.5, + "server": { + "type": "stats", + "elapsedMs": 3001.788541, + "cpu": { + "user": 2620002, + "system": 573180 + }, + "memory": { + "rss": 126697472, + "heapTotal": 38912000, + "heapUsed": 21943392, + "external": 4213288, + "arrayBuffers": 282739 + }, + "retainedMemory": { + "rss": 126697472, + "heapTotal": 38387712, + "heapUsed": 16427056, + "external": 4213288, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123728 + }, + "idleMemory": { + "rss": 88604672, + "heapTotal": 33406976, + "heapUsed": 14169208, + "external": 4208196, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 130096, + "errors": 0, + "elapsedMs": 3001.1949170000007, + "rps": 43348.06755238816, + "latencyMs": { + "mean": 1.152940074029954, + "p50": 1.096, + "p95": 1.485, + "p99": 2.257, + "max": 6.157500000001164 + }, + "clientCpuPercent": 97.54171524874668, + "serverCpuPercent": 106.83508470685862, + "serverCpuUsPerRequest": 24.65086551469684, + "serverRssMiB": 113.859375, + "serverRetainedHeapMiB": 13.772018432617188, + "idleRssMiB": 80.59375, + "server": { + "type": "stats", + "elapsedMs": 3001.8032080000003, + "cpu": { + "user": 2573393, + "system": 633586 + }, + "memory": { + "rss": 119390208, + "heapTotal": 33832960, + "heapUsed": 17667496, + "external": 4282464, + "arrayBuffers": 290994 + }, + "retainedMemory": { + "rss": 119406592, + "heapTotal": 33832960, + "heapUsed": 14441008, + "external": 4282464, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116608 + }, + "idleMemory": { + "rss": 84508672, + "heapTotal": 31211520, + "heapUsed": 12360024, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 2, + "requests": 129572, + "errors": 0, + "elapsedMs": 3001.247083999988, + "rps": 43172.719997218504, + "latencyMs": { + "mean": 1.157616055181662, + "p50": 1.095, + "p95": 1.559, + "p99": 2.258, + "max": 6.9178329999995185 + }, + "clientCpuPercent": 97.80530952112746, + "serverCpuPercent": 106.82022932466263, + "serverCpuUsPerRequest": 24.748641681844845, + "serverRssMiB": 113.953125, + "serverRetainedHeapMiB": 13.709548950195312, + "idleRssMiB": 80.5, + "server": { + "type": "stats", + "elapsedMs": 3001.9885000000004, + "cpu": { + "user": 2578846, + "system": 627885 + }, + "memory": { + "rss": 119488512, + "heapTotal": 34357248, + "heapUsed": 15996256, + "external": 4268740, + "arrayBuffers": 279642 + }, + "retainedMemory": { + "rss": 119619584, + "heapTotal": 33832960, + "heapUsed": 14375504, + "external": 4268740, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116816 + }, + "idleMemory": { + "rss": 84410368, + "heapTotal": 30949376, + "heapUsed": 12364320, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 2, + "requests": 138179, + "errors": 0, + "elapsedMs": 3001.0421659999993, + "rps": 46043.67161697522, + "latencyMs": { + "mean": 1.0854930986474043, + "p50": 1.002, + "p95": 1.936, + "p99": 2.09, + "max": 7.095333000004757 + }, + "clientCpuPercent": 99.70956202819313, + "serverCpuPercent": 106.99840262258955, + "serverCpuUsPerRequest": 23.244262876413927, + "serverRssMiB": 115.09375, + "serverRetainedHeapMiB": 13.666206359863281, + "idleRssMiB": 80.953125, + "server": { + "type": "stats", + "elapsedMs": 3001.7915420000004, + "cpu": { + "user": 2507439, + "system": 704430 + }, + "memory": { + "rss": 120684544, + "heapTotal": 34095104, + "heapUsed": 21730936, + "external": 4310536, + "arrayBuffers": 321438 + }, + "retainedMemory": { + "rss": 120733696, + "heapTotal": 33832960, + "heapUsed": 14330056, + "external": 4310536, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117904 + }, + "idleMemory": { + "rss": 84885504, + "heapTotal": 31735808, + "heapUsed": 12365440, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 140455, + "errors": 0, + "elapsedMs": 3000.8045830000046, + "rps": 46805.7802882927, + "latencyMs": { + "mean": 1.0678067734078303, + "p50": 0.976, + "p95": 1.747, + "p99": 2.007, + "max": 5.23887499999546 + }, + "clientCpuPercent": 100.22935238898879, + "serverCpuPercent": 106.57009459564534, + "serverCpuUsPerRequest": 22.77324409953366, + "serverRssMiB": 110.78125, + "serverRetainedHeapMiB": 12.058685302734375, + "idleRssMiB": 74.6875, + "server": { + "type": "stats", + "elapsedMs": 3001.419875, + "cpu": { + "user": 2464038, + "system": 734578 + }, + "memory": { + "rss": 116162560, + "heapTotal": 31735808, + "heapUsed": 15881152, + "external": 4196146, + "arrayBuffers": 295380 + }, + "retainedMemory": { + "rss": 116178944, + "heapTotal": 31735808, + "heapUsed": 12644448, + "external": 4196146, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113456 + }, + "idleMemory": { + "rss": 78315520, + "heapTotal": 21250048, + "heapUsed": 10640032, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 96977, + "errors": 0, + "elapsedMs": 3001.5130000000063, + "rps": 32309.371973401347, + "latencyMs": { + "mean": 1.5468264163357608, + "p50": 1.503, + "p95": 1.906, + "p99": 3.034, + "max": 6.958832999996957 + }, + "clientCpuPercent": 79.28871205955113, + "serverCpuPercent": 106.82448268828462, + "serverCpuUsPerRequest": 33.06919166400281, + "serverRssMiB": 165.671875, + "serverRetainedHeapMiB": 15.732307434082031, + "idleRssMiB": 85.65625, + "server": { + "type": "stats", + "elapsedMs": 3002.0749170000004, + "cpu": { + "user": 2709146, + "system": 497805 + }, + "memory": { + "rss": 173719552, + "heapTotal": 90537984, + "heapUsed": 42868448, + "external": 4615073, + "arrayBuffers": 646882 + }, + "retainedMemory": { + "rss": 173801472, + "heapTotal": 86867968, + "heapUsed": 16496520, + "external": 4615073, + "arrayBuffers": 277690 + }, + "maxRssKiB": 169728 + }, + "idleMemory": { + "rss": 89817088, + "heapTotal": 33652736, + "heapUsed": 14022168, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 2, + "requests": 96698, + "errors": 0, + "elapsedMs": 3001.490875000003, + "rps": 32216.65633083089, + "latencyMs": { + "mean": 1.5512237116176073, + "p50": 1.492, + "p95": 1.879, + "p99": 2.988, + "max": 6.675250000000233 + }, + "clientCpuPercent": 80.13251081431315, + "serverCpuPercent": 106.59409810952496, + "serverCpuUsPerRequest": 33.09532772135928, + "serverRssMiB": 166.828125, + "serverRetainedHeapMiB": 15.665298461914062, + "idleRssMiB": 86.234375, + "server": { + "type": "stats", + "elapsedMs": 3002.2787909999997, + "cpu": { + "user": 2708246, + "system": 492006 + }, + "memory": { + "rss": 174931968, + "heapTotal": 92635136, + "heapUsed": 51081952, + "external": 4677846, + "arrayBuffers": 712027 + }, + "retainedMemory": { + "rss": 174997504, + "heapTotal": 91324416, + "heapUsed": 16426256, + "external": 4677846, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170896 + }, + "idleMemory": { + "rss": 90423296, + "heapTotal": 33128448, + "heapUsed": 14029648, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 99146, + "errors": 0, + "elapsedMs": 3001.667791999993, + "rps": 33030.30410768396, + "latencyMs": { + "mean": 1.5130151854235059, + "p50": 1.448, + "p95": 1.798, + "p99": 2.931, + "max": 6.345083000007435 + }, + "clientCpuPercent": 83.35599318047404, + "serverCpuPercent": 106.81848903399472, + "serverCpuUsPerRequest": 32.34740685453775, + "serverRssMiB": 120.921875, + "serverRetainedHeapMiB": 14.018936157226562, + "idleRssMiB": 81.75, + "server": { + "type": "stats", + "elapsedMs": 3002.397833, + "cpu": { + "user": 2672652, + "system": 534464 + }, + "memory": { + "rss": 126795776, + "heapTotal": 37322752, + "heapUsed": 15692136, + "external": 4240553, + "arrayBuffers": 350298 + }, + "retainedMemory": { + "rss": 126500864, + "heapTotal": 33914880, + "heapUsed": 14699920, + "external": 4240553, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123856 + }, + "idleMemory": { + "rss": 85721088, + "heapTotal": 31293440, + "heapUsed": 12373320, + "external": 4167902, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 3, + "requests": 111954, + "errors": 0, + "elapsedMs": 3001.30891599998, + "rps": 37301.725058414726, + "latencyMs": { + "mean": 1.3397546027654328, + "p50": 1.281, + "p95": 1.569, + "p99": 2.593, + "max": 6.345999999990454 + }, + "clientCpuPercent": 89.98074092283868, + "serverCpuPercent": 107.16628054504444, + "serverCpuUsPerRequest": 28.736900870000177, + "serverRssMiB": 138.53125, + "serverRetainedHeapMiB": 17.20830535888672, + "idleRssMiB": 88.40625, + "server": { + "type": "stats", + "elapsedMs": 3002.073958, + "cpu": { + "user": 2642331, + "system": 574880 + }, + "memory": { + "rss": 145260544, + "heapTotal": 57524224, + "heapUsed": 24756824, + "external": 4355172, + "arrayBuffers": 366074 + }, + "retainedMemory": { + "rss": 145293312, + "heapTotal": 56737792, + "heapUsed": 18044216, + "external": 4355172, + "arrayBuffers": 343226 + }, + "maxRssKiB": 141888 + }, + "idleMemory": { + "rss": 92700672, + "heapTotal": 34979840, + "heapUsed": 15782760, + "external": 4397817, + "arrayBuffers": 277651 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 124095, + "errors": 0, + "elapsedMs": 3001.2762910000165, + "rps": 41347.40955776914, + "latencyMs": { + "mean": 1.2086936154236512, + "p50": 1.148, + "p95": 1.394, + "p99": 2.361, + "max": 6.111000000004424 + }, + "clientCpuPercent": 95.73777024849007, + "serverCpuPercent": 106.29868726879619, + "serverCpuUsPerRequest": 25.715314879729238, + "serverRssMiB": 120.609375, + "serverRetainedHeapMiB": 15.580413818359375, + "idleRssMiB": 84.375, + "server": { + "type": "stats", + "elapsedMs": 3002.0521249999997, + "cpu": { + "user": 2603690, + "system": 587452 + }, + "memory": { + "rss": 126468096, + "heapTotal": 39436288, + "heapUsed": 22318680, + "external": 4216552, + "arrayBuffers": 286003 + }, + "retainedMemory": { + "rss": 126484480, + "heapTotal": 38125568, + "heapUsed": 16337248, + "external": 4216552, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123520 + }, + "idleMemory": { + "rss": 88473600, + "heapTotal": 33669120, + "heapUsed": 14169064, + "external": 4208196, + "arrayBuffers": 212115 + } + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 110859, + "errors": 0, + "elapsedMs": 3001.410666999989, + "rps": 36935.63204091871, + "latencyMs": { + "mean": 1.3530661948059783, + "p50": 1.291, + "p95": 1.63, + "p99": 2.625, + "max": 8.578832999977749 + }, + "clientCpuPercent": 89.78704679202134, + "serverCpuPercent": 107.36699080999855, + "serverCpuUsPerRequest": 29.0750322481711, + "serverRssMiB": 139.9375, + "serverRetainedHeapMiB": 17.290924072265625, + "idleRssMiB": 88.109375, + "server": { + "type": "stats", + "elapsedMs": 3002.0670000000005, + "cpu": { + "user": 2619089, + "system": 604140 + }, + "memory": { + "rss": 146735104, + "heapTotal": 58310656, + "heapUsed": 24000072, + "external": 4348296, + "arrayBuffers": 356826 + }, + "retainedMemory": { + "rss": 146751488, + "heapTotal": 58048512, + "heapUsed": 18130848, + "external": 4348296, + "arrayBuffers": 343226 + }, + "maxRssKiB": 143312 + }, + "idleMemory": { + "rss": 92389376, + "heapTotal": 35766272, + "heapUsed": 15779960, + "external": 4400189, + "arrayBuffers": 277651 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 3, + "requests": 128711, + "errors": 0, + "elapsedMs": 3001.1867499999935, + "rps": 42886.70140237034, + "latencyMs": { + "mean": 1.1653298502847367, + "p50": 1.102, + "p95": 1.555, + "p99": 2.277, + "max": 6.79941599999438 + }, + "clientCpuPercent": 97.26272448723847, + "serverCpuPercent": 106.97221594275972, + "serverCpuUsPerRequest": 24.949406033672336, + "serverRssMiB": 113.953125, + "serverRetainedHeapMiB": 13.723388671875, + "idleRssMiB": 80.796875, + "server": { + "type": "stats", + "elapsedMs": 3001.959875, + "cpu": { + "user": 2574343, + "system": 636920 + }, + "memory": { + "rss": 119488512, + "heapTotal": 34095104, + "heapUsed": 16872168, + "external": 4274545, + "arrayBuffers": 285447 + }, + "retainedMemory": { + "rss": 119668736, + "heapTotal": 33832960, + "heapUsed": 14390016, + "external": 4274545, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116864 + }, + "idleMemory": { + "rss": 84721664, + "heapTotal": 31211520, + "heapUsed": 12367480, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 3, + "requests": 139181, + "errors": 0, + "elapsedMs": 3001.0176249999786, + "rps": 46377.934884671326, + "latencyMs": { + "mean": 1.0776942537918726, + "p50": 0.998, + "p95": 1.923, + "p99": 2.087, + "max": 6.934292000019923 + }, + "clientCpuPercent": 99.73270316931315, + "serverCpuPercent": 107.15961361219927, + "serverCpuUsPerRequest": 23.1127740136944, + "serverRssMiB": 115.140625, + "serverRetainedHeapMiB": 13.651901245117188, + "idleRssMiB": 80.90625, + "server": { + "type": "stats", + "elapsedMs": 3001.9322500000003, + "cpu": { + "user": 2513601, + "system": 703258 + }, + "memory": { + "rss": 120733696, + "heapTotal": 34357248, + "heapUsed": 15816624, + "external": 4268482, + "arrayBuffers": 279384 + }, + "retainedMemory": { + "rss": 120766464, + "heapTotal": 33832960, + "heapUsed": 14315056, + "external": 4268482, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117936 + }, + "idleMemory": { + "rss": 84836352, + "heapTotal": 31211520, + "heapUsed": 12363696, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 142753, + "errors": 0, + "elapsedMs": 3000.7842079999973, + "rps": 47571.89791236069, + "latencyMs": { + "mean": 1.0506651196402137, + "p50": 0.95, + "p95": 1.658, + "p99": 1.891, + "max": 6.199249999976018 + }, + "clientCpuPercent": 100.32514140716921, + "serverCpuPercent": 106.54119302554773, + "serverCpuUsPerRequest": 22.40128753861565, + "serverRssMiB": 111.171875, + "serverRetainedHeapMiB": 11.985786437988281, + "idleRssMiB": 76.09375, + "server": { + "type": "stats", + "elapsedMs": 3001.5160419999997, + "cpu": { + "user": 2486855, + "system": 710996 + }, + "memory": { + "rss": 116572160, + "heapTotal": 31473664, + "heapUsed": 15174376, + "external": 4190986, + "arrayBuffers": 290220 + }, + "retainedMemory": { + "rss": 116604928, + "heapTotal": 31473664, + "heapUsed": 12568008, + "external": 4190986, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113872 + }, + "idleMemory": { + "rss": 79790080, + "heapTotal": 20987904, + "heapUsed": 10642848, + "external": 4688469, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 129608, + "errors": 0, + "elapsedMs": 3001.136165999982, + "rps": 43186.311060569446, + "latencyMs": { + "mean": 1.1572495931810074, + "p50": 1.099, + "p95": 1.39, + "p99": 2.263, + "max": 6.591500000009546 + }, + "clientCpuPercent": 97.38625101757604, + "serverCpuPercent": 106.98407611590612, + "serverCpuUsPerRequest": 24.7785167582248, + "serverRssMiB": 114.140625, + "serverRetainedHeapMiB": 13.7353515625, + "idleRssMiB": 81, + "server": { + "type": "stats", + "elapsedMs": 3001.843, + "cpu": { + "user": 2584995, + "system": 626499 + }, + "memory": { + "rss": 119685120, + "heapTotal": 34095104, + "heapUsed": 17085744, + "external": 4278336, + "arrayBuffers": 286866 + }, + "retainedMemory": { + "rss": 119701504, + "heapTotal": 34095104, + "heapUsed": 14402560, + "external": 4278336, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116896 + }, + "idleMemory": { + "rss": 84934656, + "heapTotal": 31473664, + "heapUsed": 12359152, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 3, + "requests": 96584, + "errors": 0, + "elapsedMs": 3002.4322499999835, + "rps": 32168.585985579037, + "latencyMs": { + "mean": 1.5535118690362422, + "p50": 1.492, + "p95": 1.845, + "p99": 2.987, + "max": 7.033374999999069 + }, + "clientCpuPercent": 80.31418527428931, + "serverCpuPercent": 106.72070578286859, + "serverCpuUsPerRequest": 33.18318769154311, + "serverRssMiB": 166.8125, + "serverRetainedHeapMiB": 15.717124938964844, + "idleRssMiB": 86.359375, + "server": { + "type": "stats", + "elapsedMs": 3003.1332500000003, + "cpu": { + "user": 2714343, + "system": 490622 + }, + "memory": { + "rss": 174915584, + "heapTotal": 90800128, + "heapUsed": 18689616, + "external": 4262549, + "arrayBuffers": 296730 + }, + "retainedMemory": { + "rss": 174964736, + "heapTotal": 86605824, + "heapUsed": 16480600, + "external": 4262549, + "arrayBuffers": 277690 + }, + "maxRssKiB": 170864 + }, + "idleMemory": { + "rss": 90554368, + "heapTotal": 33128448, + "heapUsed": 14028288, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 100949, + "errors": 0, + "elapsedMs": 3001.450917000009, + "rps": 33633.40024260663, + "latencyMs": { + "mean": 1.4859229566910221, + "p50": 1.425, + "p95": 1.761, + "p99": 2.856, + "max": 7.160250000015367 + }, + "clientCpuPercent": 83.29954642400013, + "serverCpuPercent": 107.03574368537856, + "serverCpuUsPerRequest": 31.830498568584137, + "serverRssMiB": 120.921875, + "serverRetainedHeapMiB": 14.083969116210938, + "idleRssMiB": 81.828125, + "server": { + "type": "stats", + "elapsedMs": 3002.0410839999995, + "cpu": { + "user": 2702689, + "system": 510568 + }, + "memory": { + "rss": 126795776, + "heapTotal": 37847040, + "heapUsed": 17370016, + "external": 4320777, + "arrayBuffers": 430522 + }, + "retainedMemory": { + "rss": 126484480, + "heapTotal": 34701312, + "heapUsed": 14768112, + "external": 4320777, + "arrayBuffers": 277690 + }, + "maxRssKiB": 123872 + }, + "idleMemory": { + "rss": 85803008, + "heapTotal": 31555584, + "heapUsed": 12372760, + "external": 4167902, + "arrayBuffers": 212115 + } + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 110938, + "errors": 0, + "elapsedMs": 3001.347208000021, + "rps": 36962.734502791725, + "latencyMs": { + "mean": 1.352080887919322, + "p50": 1.262, + "p95": 1.696, + "p99": 2.67, + "max": 8.852083999983734 + }, + "clientCpuPercent": 80.60263716079805, + "serverCpuPercent": 107.90713075251793, + "serverCpuUsPerRequest": 29.199372622545926, + "serverRssMiB": 173.59375, + "serverRetainedHeapMiB": 15.723434448242188, + "idleRssMiB": 85.40625, + "server": { + "type": "stats", + "elapsedMs": 3001.9517499999997, + "cpu": { + "user": 2699637, + "system": 539683 + }, + "memory": { + "rss": 182026240, + "heapTotal": 155025408, + "heapUsed": 47933152, + "external": 4713657, + "arrayBuffers": 745466 + }, + "retainedMemory": { + "rss": 182059008, + "heapTotal": 153452544, + "heapUsed": 16487216, + "external": 4713657, + "arrayBuffers": 277690 + }, + "maxRssKiB": 177792 + }, + "idleMemory": { + "rss": 89554944, + "heapTotal": 33128448, + "heapUsed": 14023688, + "external": 4442600, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "round": 3, + "requests": 123647, + "errors": 0, + "elapsedMs": 3001.1773340000072, + "rps": 41199.498143350866, + "latencyMs": { + "mean": 1.2130750036475169, + "p50": 1.156, + "p95": 1.46, + "p99": 2.343, + "max": 7.720000000001164 + }, + "clientCpuPercent": 94.92161518503569, + "serverCpuPercent": 107.48661760014697, + "serverCpuUsPerRequest": 26.094599949857255, + "serverRssMiB": 118.359375, + "serverRetainedHeapMiB": 15.624137878417969, + "idleRssMiB": 86.578125, + "server": { + "type": "stats", + "elapsedMs": 3001.7867079999996, + "cpu": { + "user": 2647982, + "system": 578537 + }, + "memory": { + "rss": 124108800, + "heapTotal": 35487744, + "heapUsed": 20811760, + "external": 4262294, + "arrayBuffers": 296475 + }, + "retainedMemory": { + "rss": 124125184, + "heapTotal": 35487744, + "heapUsed": 16383096, + "external": 4262294, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121216 + }, + "idleMemory": { + "rss": 90783744, + "heapTotal": 33128448, + "heapUsed": 13965872, + "external": 4440228, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 126554, + "errors": 0, + "elapsedMs": 3001.1387090000208, + "rps": 42168.66072217228, + "latencyMs": { + "mean": 1.1851614559634245, + "p50": 1.128, + "p95": 1.46, + "p99": 2.296, + "max": 4.960332999995444 + }, + "clientCpuPercent": 96.4487576438767, + "serverCpuPercent": 107.18680428128334, + "serverCpuUsPerRequest": 25.424190464149692, + "serverRssMiB": 115.5, + "serverRetainedHeapMiB": 13.997421264648438, + "idleRssMiB": 81.734375, + "server": { + "type": "stats", + "elapsedMs": 3001.799542, + "cpu": { + "user": 2639177, + "system": 578356 + }, + "memory": { + "rss": 121110528, + "heapTotal": 34439168, + "heapUsed": 15904392, + "external": 4184977, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 121110528, + "heapTotal": 34439168, + "heapUsed": 14677360, + "external": 4184977, + "arrayBuffers": 277690 + }, + "maxRssKiB": 118272 + }, + "idleMemory": { + "rss": 85704704, + "heapTotal": 31555584, + "heapUsed": 12367920, + "external": 4184917, + "arrayBuffers": 212115 + } + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 124407, + "errors": 0, + "elapsedMs": 3001.144417000003, + "rps": 41453.18675612399, + "latencyMs": { + "mean": 1.205642338373304, + "p50": 1.149, + "p95": 1.446, + "p99": 2.328, + "max": 5.81808299999102 + }, + "clientCpuPercent": 95.31007517656545, + "serverCpuPercent": 107.78311320697362, + "serverCpuUsPerRequest": 26.00765230252317, + "serverRssMiB": 118.59375, + "serverRetainedHeapMiB": 15.549369812011719, + "idleRssMiB": 86.375, + "server": { + "type": "stats", + "elapsedMs": 3001.89325, + "cpu": { + "user": 2664044, + "system": 571490 + }, + "memory": { + "rss": 124354560, + "heapTotal": 36012032, + "heapUsed": 23448640, + "external": 4279218, + "arrayBuffers": 311027 + }, + "retainedMemory": { + "rss": 124387328, + "heapTotal": 36012032, + "heapUsed": 16304696, + "external": 4279218, + "arrayBuffers": 277690 + }, + "maxRssKiB": 121472 + }, + "idleMemory": { + "rss": 90570752, + "heapTotal": 33390592, + "heapUsed": 13960600, + "external": 4442600, + "arrayBuffers": 212115 + } + } + ], + "finishedAt": "2026-10-27T16:21:46.011Z", + "elapsedSeconds": 200.879887166 + }, + "groups": [ + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 3, + "errors": 0, + "rps": 33633.40024260663, + "cpuUs": 31.830498568584137, + "meanMs": 1.4859229566910221, + "p95Ms": 1.798, + "rssMiB": 120.921875, + "heapMiB": 14.018936157226562, + "clientCpu": 83.35599318047404 + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 3, + "errors": 0, + "rps": 32309.371973401347, + "cpuUs": 33.06919166400281, + "meanMs": 1.5468264163357608, + "p95Ms": 1.884, + "rssMiB": 166.375, + "heapMiB": 15.723434448242188, + "clientCpu": 79.54676272663933 + }, + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "rounds": 3, + "errors": 0, + "rps": 32168.585985579037, + "cpuUs": 33.18318769154311, + "meanMs": 1.5535118690362422, + "p95Ms": 1.879, + "rssMiB": 166.828125, + "heapMiB": 15.688346862792969, + "clientCpu": 80.13251081431315 + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 3, + "errors": 0, + "rps": 42002.014145421694, + "cpuUs": 25.57026353784886, + "meanMs": 1.1898854058022599, + "p95Ms": 1.46, + "rssMiB": 115.1875, + "heapMiB": 13.993972778320312, + "clientCpu": 96.28885271942542 + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 3, + "errors": 0, + "rps": 40956.74757071642, + "cpuUs": 26.365455018793018, + "meanMs": 1.2203168658048573, + "p95Ms": 1.446, + "rssMiB": 118.78125, + "heapMiB": 15.549369812011719, + "clientCpu": 95.04269207641536 + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "rounds": 3, + "errors": 0, + "rps": 41160.48997473387, + "cpuUs": 26.20823450363882, + "meanMs": 1.2142085592856777, + "p95Ms": 1.456, + "rssMiB": 118.796875, + "heapMiB": 15.626991271972656, + "clientCpu": 94.92161518503569 + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 3, + "errors": 0, + "rps": 41386.357510985974, + "cpuUs": 25.65988776980734, + "meanMs": 1.2075836249305614, + "p95Ms": 1.399, + "rssMiB": 120.609375, + "heapMiB": 15.610618591308594, + "clientCpu": 95.73606880000065 + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 3, + "errors": 0, + "rps": 37407.53176845551, + "cpuUs": 28.67299367595974, + "meanMs": 1.3359732180724961, + "p95Ms": 1.518, + "rssMiB": 139.9375, + "heapMiB": 17.23480987548828, + "clientCpu": 90.1498919971792 + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "rounds": 3, + "errors": 0, + "rps": 37358.14613673323, + "cpuUs": 28.719671429335904, + "meanMs": 1.3378279333761678, + "p95Ms": 1.556, + "rssMiB": 138.890625, + "heapMiB": 17.20008087158203, + "clientCpu": 90.12557480696519 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 3, + "errors": 0, + "rps": 47094.69605062915, + "cpuUs": 22.595862108004077, + "meanMs": 1.061281811226363, + "p95Ms": 1.747, + "rssMiB": 111.125, + "heapMiB": 12.046852111816406, + "clientCpu": 100.27043541389784 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 3, + "errors": 0, + "rps": 43348.06755238816, + "cpuUs": 24.650963038083603, + "meanMs": 1.152940074029954, + "p95Ms": 1.421, + "rssMiB": 113.890625, + "heapMiB": 13.7353515625, + "clientCpu": 97.54171524874668 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "rounds": 3, + "errors": 0, + "rps": 43172.719997218504, + "cpuUs": 24.748641681844845, + "meanMs": 1.157616055181662, + "p95Ms": 1.555, + "rssMiB": 113.953125, + "heapMiB": 13.709548950195312, + "clientCpu": 97.75805511707297 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "rounds": 3, + "errors": 0, + "rps": 46048.28347525896, + "cpuUs": 23.174358863031145, + "meanMs": 1.0853443055386283, + "p95Ms": 1.936, + "rssMiB": 115.140625, + "heapMiB": 13.6630859375, + "clientCpu": 99.73270316931315 + } + ], + "comparisons": [ + { + "framework": "express", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "versusIsolatedControl": null, + "medianGainPercent": -0.6798086352298061, + "minGainPercent": -12.970221445197993, + "maxGainPercent": -0.2869620698501496, + "medianCpuUsDelta": 0.2141724639805176, + "medianP95MsDelta": 0.028000000000000025, + "medianRssMiBDelta": 0.640625, + "medianHeapMiBDelta": -0.02808380126953125, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": -0.6798086352298061, + "cpuUsDelta": 0.2141724639805176, + "p95MsDelta": 0.028000000000000025, + "rssMiBDelta": 0.640625, + "heapMiBDelta": -0.02808380126953125 + }, + { + "round": 2, + "throughputPercent": -0.2869620698501496, + "cpuUsDelta": 0.026136057356474396, + "p95MsDelta": -0.026999999999999913, + "rssMiBDelta": 1.15625, + "heapMiBDelta": -0.06700897216796875 + }, + { + "round": 3, + "throughputPercent": -12.970221445197993, + "cpuUsDelta": 3.9838150689971847, + "p95MsDelta": 0.14900000000000002, + "rssMiBDelta": -6.78125, + "heapMiBDelta": -0.00630950927734375 + } + ] + }, + { + "framework": "koa", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "versusIsolatedControl": null, + "medianGainPercent": 0.23981451630030737, + "minGainPercent": -0.6119882031401347, + "maxGainPercent": 0.903191503418399, + "medianCpuUsDelta": -0.05058820171054279, + "medianP95MsDelta": 0, + "medianRssMiBDelta": -0.171875, + "medianHeapMiBDelta": 0.07476806640625, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": 0.903191503418399, + "cpuUsDelta": -0.1660272892956307, + "p95MsDelta": -0.004999999999999893, + "rssMiBDelta": -0.171875, + "heapMiBDelta": 0.109649658203125 + }, + { + "round": 2, + "throughputPercent": 0.23981451630030737, + "cpuUsDelta": -0.05058820171054279, + "p95MsDelta": 0, + "rssMiBDelta": 0.015625, + "heapMiBDelta": 0.0694732666015625 + }, + { + "round": 3, + "throughputPercent": -0.6119882031401347, + "cpuUsDelta": 0.08694764733408533, + "p95MsDelta": 0.014000000000000012, + "rssMiBDelta": -0.234375, + "heapMiBDelta": 0.07476806640625 + } + ] + }, + { + "framework": "leizmweb", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "versusIsolatedControl": null, + "medianGainPercent": -0.07556027280051225, + "minGainPercent": -0.13202055679045754, + "maxGainPercent": 0.9911648921844485, + "medianCpuUsDelta": 0.026173049115094216, + "medianP95MsDelta": 0.0009999999999998899, + "medianRssMiBDelta": -1.40625, + "medianHeapMiBDelta": -0.052032470703125, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": -0.13202055679045754, + "cpuUsDelta": 0.0466777533761622, + "p95MsDelta": 0.039000000000000146, + "rssMiBDelta": 0.15625, + "heapMiBDelta": -0.052032470703125 + }, + { + "round": 2, + "throughputPercent": -0.07556027280051225, + "cpuUsDelta": 0.026173049115094216, + "p95MsDelta": 0.0009999999999998899, + "rssMiBDelta": -1.53125, + "heapMiBDelta": 0.01329803466796875 + }, + { + "round": 3, + "throughputPercent": 0.9911648921844485, + "cpuUsDelta": -0.33813137817092453, + "p95MsDelta": -0.06099999999999994, + "rssMiBDelta": -1.40625, + "heapMiBDelta": -0.08261871337890625 + } + ] + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "reply", + "versusIsolatedControl": null, + "medianGainPercent": -0.4045106623443817, + "minGainPercent": -0.6937607099131493, + "maxGainPercent": -0.06084173741922605, + "medianCpuUsDelta": 0.0977761671480053, + "medianP95MsDelta": 0.07399999999999984, + "medianRssMiBDelta": 0.09375, + "medianHeapMiBDelta": -0.011962890625, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": -0.06084173741922605, + "cpuUsDelta": 0.021184870895485375, + "p95MsDelta": 0.04200000000000004, + "rssMiBDelta": 0.875, + "heapMiBDelta": -0.00662994384765625 + }, + { + "round": 2, + "throughputPercent": -0.4045106623443817, + "cpuUsDelta": 0.0977761671480053, + "p95MsDelta": 0.07399999999999984, + "rssMiBDelta": 0.09375, + "heapMiBDelta": -0.062469482421875 + }, + { + "round": 3, + "throughputPercent": -0.6937607099131493, + "cpuUsDelta": 0.17088927544753574, + "p95MsDelta": 0.16500000000000004, + "rssMiBDelta": -0.1875, + "heapMiBDelta": -0.011962890625 + } + ] + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "versusIsolatedControl": null, + "medianGainPercent": 6.218510343810135, + "minGainPercent": 6.174797489300854, + "maxGainPercent": 7.390359921285206, + "medianCpuUsDelta": -1.476604175052458, + "medianP95MsDelta": 0.5330000000000001, + "medianRssMiBDelta": 1.234375, + "medianHeapMiBDelta": -0.0834503173828125, + "allRoundsPositive": true, + "pairs": [ + { + "round": 1, + "throughputPercent": 6.174797489300854, + "cpuUsDelta": -1.476604175052458, + "p95MsDelta": 0.5349999999999999, + "rssMiBDelta": 1.40625, + "heapMiBDelta": -0.04140472412109375 + }, + { + "round": 2, + "throughputPercent": 6.218510343810135, + "cpuUsDelta": -1.4066026382829122, + "p95MsDelta": 0.45099999999999985, + "rssMiBDelta": 1.234375, + "heapMiBDelta": -0.10581207275390625 + }, + { + "round": 3, + "throughputPercent": 7.390359921285206, + "cpuUsDelta": -1.6657427445304016, + "p95MsDelta": 0.5330000000000001, + "rssMiBDelta": 1, + "heapMiBDelta": -0.0834503173828125 + } + ] + } + ] + }, + { + "input": "benchmarks/results/experiments/confirm-h3.json", + "raw": { + "startedAt": "2026-10-27T16:23:44.394Z", + "commit": "dfa724ec728d33655fc34cfda21b48e644b8dfee", + "harnessSha256": { + "fixture.mjs": "064fd8eb68b46d1b567bbea84b7655948def3687c5f9e68438c1bfdc511259e1", + "load.mjs": "ce51b4f707385179b4c69bfda7babe2534083005280e9819ddd207f97dafda5a", + "server.mjs": "d3d963157c8aeed9b1662a8bb4c33a49c6e1c555375b45981e80a43a9d18e72e", + "run.mjs": "0330171024592b77ca41a4779cefa8fd68ffa71478d284d380d70ebc4af4b3e4" + }, + "environment": { + "node": "v24.22.1", + "os": "Darwin 27.2.0 arm64", + "platform": "darwin", + "cpu": "Apple M2", + "logicalCpus": 8, + "availableParallelism": 8, + "systemMemoryBytes": 17179869184, + "cpuMax": null, + "memoryMax": null, + "versions": { + "erest": "3.4.0", + "packages/erest-express/": "3.4.0", + "packages/erest-koa/": "3.4.0", + "packages/erest-leizmweb/": "3.4.0", + "node_modules/express/": "5.2.1", + "node_modules/koa/": "3.0.0", + "node_modules/koa-router/": "13.1.1", + "node_modules/koa-bodyparser/": "4.4.1", + "node_modules/@leizm/web/": "2.7.3", + "node_modules/zod/": "4.4.3", + "packages/erest-h3/": "3.4.0", + "node_modules/h3/": "2.0.8" + } + }, + "config": { + "frameworks": [ + "h3" + ], + "scenarios": [ + "post" + ], + "concurrency": [ + 50 + ], + "rounds": 7, + "durationMs": 5000, + "warmupMs": 3000, + "serverCpu": null + }, + "experiments": { + "commit": "dfa724ec728d33655fc34cfda21b48e644b8dfee", + "prepareSha256": "46e93b3a12ea69caafd663a19e2525938ac75648517ee55d38d712689f27472f", + "baseline": { + "dist/lib/api.js": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "dist/lib/adapters/utils.js": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "dist/lib/params.js": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "packages/erest-express/dist/index.js": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "packages/erest-koa/dist/index.js": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "packages/erest-leizmweb/dist/index.js": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "packages/erest-h3/dist/index.js": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0" + }, + "variants": { + "control": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/control", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [], + "descriptions": [ + "Unchanged compiled runtime snapshot; control for loading an isolated copy." + ], + "caveats": [], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" + } + } + }, + "foreach": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/foreach", + "frameworks": [ + "h3" + ], + "patches": [ + "foreach" + ], + "descriptions": [ + "Eagerly copy Web Headers with forEach instead of allocating iterator entry pairs; preserve an own __proto__ key." + ], + "caveats": [ + "Requires duplicate headers, special keys, mutation timing and all H3 behavior checks before a production change." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "c8bb09d4544d051a2202d125416592ad3110e074aeb67303169f367ad8cb417f" + } + } + }, + "node-headers": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/node-headers", + "frameworks": [ + "h3" + ], + "patches": [ + "node-headers" + ], + "descriptions": [ + "Node-only diagnostic: copy IncomingMessage headers instead of converting Web Headers." + ], + "caveats": [ + "Not portable; raw array/duplicate-header normalization and mutations to Web Headers can differ. This is an attribution experiment, not a shippable replacement." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "6c8fc2556f842b23d4575f40c5c7ae686ff180e2c6232a2ffca18d2c582baf5c" + } + } + }, + "reply": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/reply", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [ + "reply" + ], + "descriptions": [ + "Use per-request Reply instances with shared prototype methods instead of four per-request method closures." + ], + "caveats": [ + "Prototype/enumerability and detached method calls differ. Requires a compatibility decision and broad Reply tests before shipping." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "d429ffa67ffa89ac2c2fe8caf785170b236ea74f88930b5ef31333f5786ce454" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "65ed901e1f72f8a9ac1060b736aa82d3bd86b7a5b5c227b691faa8c12093b134" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "00a0977f107947a232e0b457b1e3c0bdcebd2b3275ce6db19defded74ae833ef" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "6ae2c3b82c298fb7ac9cc9b0784f7aa2b4cb5dc2b86a750b2ab2dd2d42e16bd4" + } + } + }, + "hoist": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/hoist", + "frameworks": [ + "express", + "koa", + "leizmweb" + ], + "patches": [ + "hoist" + ], + "descriptions": [ + "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly." + ], + "caveats": [ + "Must retain existing hook binding semantics and all layered/requiredOneOf behavior." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "5e738ee1b62fee37841aa7a176fba29d64ec8bcf84ae7b875c153470177626d3" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "15cc07b414ac5d4393170ce4cc5fd3ce8adfee1abdb6e417b579dc105c0a9bee" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "a6b044ae94621d9d237613bcaf89c0ba3ab5e0289aa6ef695887c6168a8082f9" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" + } + } + }, + "assign": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/assign", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [ + "assign" + ], + "descriptions": [ + "Replace four object spreads for flat params with Object.assign." + ], + "caveats": [ + "Diagnostic only: Object.assign treats an own __proto__ key differently; not safe to ship unchanged." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "f3537bce8dfaf13e39757a1a43428466f8d4a50fc3cd83ab2e85c3ba29f7cf86" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "f42d3219cd2f04c72167bddb5c96a9e442860d4bbca0173d465386dc293dca48" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "72e2f5ae67dc2f7afb42032c8628ca9e61eea2f9e8ff21a2296ffe18a2a8ce58" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "f2a0e652e0405aaa9b1e23d2715b39c07d638b2853971c69aa7c1ab1c4d86780" + } + } + }, + "sync": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/sync", + "frameworks": [ + "express", + "koa", + "leizmweb", + "h3" + ], + "patches": [ + "sync" + ], + "descriptions": [ + "Avoid unconditional async typed-handler wrapper; resolve async results via a shared finish callback." + ], + "caveats": [ + "Check rejection, response schemas, envelope return bookkeeping and async onion middleware before shipping." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "d5aebe36f501e7b13f787340b16746bc335ec5106d1caa7bfde605a483ef7bd0" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" + } + } + }, + "headers": { + "runtimeRoot": "benchmarks/results/experiments/runtimes/headers", + "frameworks": [ + "h3" + ], + "patches": [ + "headers" + ], + "descriptions": [ + "Lazily materialize H3 ctx.headers on first access, cache the object and keep a setter." + ], + "caveats": [ + "Header snapshot timing/property descriptors differ; reject as a drop-in optimization without an API decision." + ], + "files": { + "dist/lib/api.js": { + "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", + "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" + }, + "dist/lib/adapters/utils.js": { + "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", + "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" + }, + "dist/lib/params.js": { + "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", + "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" + }, + "packages/erest-express/dist/index.js": { + "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", + "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" + }, + "packages/erest-koa/dist/index.js": { + "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", + "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" + }, + "packages/erest-leizmweb/dist/index.js": { + "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", + "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" + }, + "packages/erest-h3/dist/index.js": { + "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", + "candidate": "00e65ed2af97fe50a1937ca1ef49645a9911b57839bfe9ed400468d2655d8b78" + } + } + } + } + }, + "selectedVariants": [ + "control", + "foreach", + "node-headers" + ], + "samples": [ + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 1, + "requests": 233905, + "errors": 0, + "elapsedMs": 5000.643458, + "rps": 46774.98045292555, + "latencyMs": { + "mean": 1.0687111520360864, + "p50": 0.977, + "p95": 1.895, + "p99": 2.014, + "max": 7.241541000000325 + }, + "clientCpuPercent": 101.53785293124572, + "serverCpuPercent": 104.00021899152249, + "serverCpuUsPerRequest": 22.237515230542314, + "serverRssMiB": 112.265625, + "serverRetainedHeapMiB": 11.966827392578125, + "idleRssMiB": 75.671875, + "server": { + "type": "stats", + "elapsedMs": 5001.399084000001, + "cpu": { + "user": 4009419, + "system": 1192047 + }, + "memory": { + "rss": 117719040, + "heapTotal": 31997952, + "heapUsed": 18142400, + "external": 4215496, + "arrayBuffers": 314730 + }, + "retainedMemory": { + "rss": 117768192, + "heapTotal": 31735808, + "heapUsed": 12548128, + "external": 4215496, + "arrayBuffers": 277690 + }, + "maxRssKiB": 115008 + }, + "idleMemory": { + "rss": 79347712, + "heapTotal": 20987904, + "heapUsed": 10642552, + "external": 4688469, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 1, + "requests": 217955, + "errors": 0, + "elapsedMs": 5001.141041999999, + "rps": 43581.05443729656, + "latencyMs": { + "mean": 1.1469965741093657, + "p50": 1.091, + "p95": 1.329, + "p99": 2.211, + "max": 5.759749999999258 + }, + "clientCpuPercent": 97.94102903446971, + "serverCpuPercent": 104.29073910493977, + "serverCpuUsPerRequest": 23.936486889495537, + "serverRssMiB": 114.1875, + "serverRetainedHeapMiB": 13.780784606933594, + "idleRssMiB": 80.5625, + "server": { + "type": "stats", + "elapsedMs": 5002.435542, + "cpu": { + "user": 4183545, + "system": 1033532 + }, + "memory": { + "rss": 119734272, + "heapTotal": 34357248, + "heapUsed": 15561608, + "external": 4269177, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119865344, + "heapTotal": 33832960, + "heapUsed": 14450200, + "external": 4269177, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117056 + }, + "idleMemory": { + "rss": 84475904, + "heapTotal": 31211520, + "heapUsed": 12358056, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "round": 1, + "requests": 220756, + "errors": 0, + "elapsedMs": 5001.129459, + "rps": 44141.228858358976, + "latencyMs": { + "mean": 1.132387331053281, + "p50": 1.076, + "p95": 1.354, + "p99": 2.187, + "max": 7.72899999999936 + }, + "clientCpuPercent": 97.7100481013563, + "serverCpuPercent": 104.19327878955525, + "serverCpuUsPerRequest": 23.608305097030204, + "serverRssMiB": 114.296875, + "serverRetainedHeapMiB": 13.704780578613281, + "idleRssMiB": 80.890625, + "server": { + "type": "stats", + "elapsedMs": 5001.930125000001, + "cpu": { + "user": 4126337, + "system": 1085338 + }, + "memory": { + "rss": 119848960, + "heapTotal": 34619392, + "heapUsed": 20328712, + "external": 4298152, + "arrayBuffers": 309054 + }, + "retainedMemory": { + "rss": 119914496, + "heapTotal": 33832960, + "heapUsed": 14370504, + "external": 4298152, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117104 + }, + "idleMemory": { + "rss": 84819968, + "heapTotal": 31211520, + "heapUsed": 12362496, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "round": 1, + "requests": 218174, + "errors": 0, + "elapsedMs": 5001.106625, + "rps": 43625.14466485705, + "latencyMs": { + "mean": 1.1458320580775154, + "p50": 1.088, + "p95": 1.356, + "p99": 2.198, + "max": 5.722874999999476 + }, + "clientCpuPercent": 98.24635562534121, + "serverCpuPercent": 104.47713844967797, + "serverCpuUsPerRequest": 23.95284039344743, + "serverRssMiB": 114.265625, + "serverRetainedHeapMiB": 13.760238647460938, + "idleRssMiB": 80.625, + "server": { + "type": "stats", + "elapsedMs": 5001.943083, + "cpu": { + "user": 4195675, + "system": 1030212 + }, + "memory": { + "rss": 119816192, + "heapTotal": 34357248, + "heapUsed": 17155624, + "external": 4276609, + "arrayBuffers": 287511 + }, + "retainedMemory": { + "rss": 119947264, + "heapTotal": 34095104, + "heapUsed": 14428656, + "external": 4276609, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117136 + }, + "idleMemory": { + "rss": 84541440, + "heapTotal": 31211520, + "heapUsed": 12363840, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 1, + "requests": 229424, + "errors": 0, + "elapsedMs": 5001.0610000000015, + "rps": 45875.06531114096, + "latencyMs": { + "mean": 1.0896086443005295, + "p50": 1.029, + "p95": 1.861, + "p99": 2.097, + "max": 5.203041000000667 + }, + "clientCpuPercent": 99.60604359754856, + "serverCpuPercent": 104.40918927062056, + "serverCpuUsPerRequest": 22.76248343678081, + "serverRssMiB": 114.640625, + "serverRetainedHeapMiB": 13.765617370605469, + "idleRssMiB": 80.390625, + "server": { + "type": "stats", + "elapsedMs": 5001.7245, + "cpu": { + "user": 4080602, + "system": 1141658 + }, + "memory": { + "rss": 120209408, + "heapTotal": 34095104, + "heapUsed": 18951272, + "external": 4291057, + "arrayBuffers": 301959 + }, + "retainedMemory": { + "rss": 120209408, + "heapTotal": 33570816, + "heapUsed": 14434296, + "external": 4291057, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117392 + }, + "idleMemory": { + "rss": 84295680, + "heapTotal": 31211520, + "heapUsed": 12363704, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 2, + "requests": 217491, + "errors": 0, + "elapsedMs": 5001.214457999995, + "rps": 43487.637218215896, + "latencyMs": { + "mean": 1.1494557709284499, + "p50": 1.093, + "p95": 1.338, + "p99": 2.207, + "max": 6.336666999995941 + }, + "clientCpuPercent": 98.12366658562524, + "serverCpuPercent": 104.34202644821703, + "serverCpuUsPerRequest": 23.99638145946269, + "serverRssMiB": 114.1875, + "serverRetainedHeapMiB": 13.80682373046875, + "idleRssMiB": 80.609375, + "server": { + "type": "stats", + "elapsedMs": 5001.816792, + "cpu": { + "user": 4184685, + "system": 1034312 + }, + "memory": { + "rss": 119734272, + "heapTotal": 34095104, + "heapUsed": 16232560, + "external": 4273821, + "arrayBuffers": 282351 + }, + "retainedMemory": { + "rss": 119734272, + "heapTotal": 34095104, + "heapUsed": 14477504, + "external": 4273821, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116928 + }, + "idleMemory": { + "rss": 84525056, + "heapTotal": 31211520, + "heapUsed": 12358488, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "round": 2, + "requests": 216769, + "errors": 0, + "elapsedMs": 5001.215665999996, + "rps": 43343.26181405674, + "latencyMs": { + "mean": 1.1532619846749563, + "p50": 1.094, + "p95": 1.362, + "p99": 2.214, + "max": 7.521708000000217 + }, + "clientCpuPercent": 98.0133097103676, + "serverCpuPercent": 104.21025625467114, + "serverCpuUsPerRequest": 24.04578145399019, + "serverRssMiB": 114.171875, + "serverRetainedHeapMiB": 13.809623718261719, + "idleRssMiB": 80.59375, + "server": { + "type": "stats", + "elapsedMs": 5001.79175, + "cpu": { + "user": 4179133, + "system": 1033247 + }, + "memory": { + "rss": 119717888, + "heapTotal": 34619392, + "heapUsed": 15584072, + "external": 4267063, + "arrayBuffers": 277965 + }, + "retainedMemory": { + "rss": 119734272, + "heapTotal": 34095104, + "heapUsed": 14480440, + "external": 4267063, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116928 + }, + "idleMemory": { + "rss": 84508672, + "heapTotal": 30949376, + "heapUsed": 12366056, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "round": 2, + "requests": 219352, + "errors": 0, + "elapsedMs": 5000.919708999994, + "rps": 43862.33188372116, + "latencyMs": { + "mean": 1.1396480123363497, + "p50": 1.081, + "p95": 1.344, + "p99": 2.18, + "max": 5.419459000004281 + }, + "clientCpuPercent": 98.47158695904601, + "serverCpuPercent": 104.4844581452081, + "serverCpuUsPerRequest": 23.8243690506583, + "serverRssMiB": 113.984375, + "serverRetainedHeapMiB": 13.757392883300781, + "idleRssMiB": 80.421875, + "server": { + "type": "stats", + "elapsedMs": 5001.627125, + "cpu": { + "user": 4185856, + "system": 1040067 + }, + "memory": { + "rss": 119521280, + "heapTotal": 34095104, + "heapUsed": 19322848, + "external": 4290799, + "arrayBuffers": 301701 + }, + "retainedMemory": { + "rss": 119537664, + "heapTotal": 34095104, + "heapUsed": 14425672, + "external": 4290799, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116736 + }, + "idleMemory": { + "rss": 84328448, + "heapTotal": 31211520, + "heapUsed": 12363000, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 2, + "requests": 231126, + "errors": 0, + "elapsedMs": 5001.012208, + "rps": 46215.84399059719, + "latencyMs": { + "mean": 1.0815766045706512, + "p50": 1.004, + "p95": 1.939, + "p99": 2.08, + "max": 5.540459000010742 + }, + "clientCpuPercent": 99.71853282066613, + "serverCpuPercent": 104.36212296872137, + "serverCpuUsPerRequest": 22.58455993700406, + "serverRssMiB": 114.703125, + "serverRetainedHeapMiB": 13.730995178222656, + "idleRssMiB": 80.921875, + "server": { + "type": "stats", + "elapsedMs": 5001.6987500000005, + "cpu": { + "user": 4054982, + "system": 1164897 + }, + "memory": { + "rss": 120274944, + "heapTotal": 34357248, + "heapUsed": 21378560, + "external": 4308601, + "arrayBuffers": 319503 + }, + "retainedMemory": { + "rss": 120389632, + "heapTotal": 33570816, + "heapUsed": 14397992, + "external": 4308601, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117568 + }, + "idleMemory": { + "rss": 84852736, + "heapTotal": 30949376, + "heapUsed": 12362008, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 2, + "requests": 236510, + "errors": 0, + "elapsedMs": 5000.930500000002, + "rps": 47293.19873571526, + "latencyMs": { + "mean": 1.056925664593459, + "p50": 0.942, + "p95": 1.834, + "p99": 1.96, + "max": 5.412374999999884 + }, + "clientCpuPercent": 100.21107071973901, + "serverCpuPercent": 103.96416017398202, + "serverCpuUsPerRequest": 21.9854932138176, + "serverRssMiB": 110.96875, + "serverRetainedHeapMiB": 12.047996520996094, + "idleRssMiB": 75.15625, + "server": { + "type": "stats", + "elapsedMs": 5001.520708, + "cpu": { + "user": 4008388, + "system": 1191401 + }, + "memory": { + "rss": 116359168, + "heapTotal": 31997952, + "heapUsed": 18562704, + "external": 4217947, + "arrayBuffers": 317181 + }, + "retainedMemory": { + "rss": 116359168, + "heapTotal": 31997952, + "heapUsed": 12633240, + "external": 4217947, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113632 + }, + "idleMemory": { + "rss": 78807040, + "heapTotal": 20987904, + "heapUsed": 10640912, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "round": 3, + "requests": 218378, + "errors": 0, + "elapsedMs": 5001.203666999994, + "rps": 43665.08835481909, + "latencyMs": { + "mean": 1.144745380198587, + "p50": 1.088, + "p95": 1.383, + "p99": 2.197, + "max": 6.589916999990237 + }, + "clientCpuPercent": 97.97261471935184, + "serverCpuPercent": 104.1667071717, + "serverCpuUsPerRequest": 23.859395177169862, + "serverRssMiB": 113.875, + "serverRetainedHeapMiB": 13.710319519042969, + "idleRssMiB": 80.40625, + "server": { + "type": "stats", + "elapsedMs": 5001.950375, + "cpu": { + "user": 4181575, + "system": 1028792 + }, + "memory": { + "rss": 119406592, + "heapTotal": 34095104, + "heapUsed": 16407096, + "external": 4272094, + "arrayBuffers": 282996 + }, + "retainedMemory": { + "rss": 119570432, + "heapTotal": 33832960, + "heapUsed": 14376312, + "external": 4272094, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116768 + }, + "idleMemory": { + "rss": 84312064, + "heapTotal": 31473664, + "heapUsed": 12362136, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "round": 3, + "requests": 215560, + "errors": 0, + "elapsedMs": 5001.172250000003, + "rps": 43101.894760773306, + "latencyMs": { + "mean": 1.1597070238309282, + "p50": 1.106, + "p95": 1.332, + "p99": 2.229, + "max": 6.24358399999619 + }, + "clientCpuPercent": 97.54904962531528, + "serverCpuPercent": 103.97844351877336, + "serverCpuUsPerRequest": 24.127073668584153, + "serverRssMiB": 113.890625, + "serverRetainedHeapMiB": 13.790252685546875, + "idleRssMiB": 81.015625, + "server": { + "type": "stats", + "elapsedMs": 5001.83675, + "cpu": { + "user": 4056048, + "system": 1144784 + }, + "memory": { + "rss": 119422976, + "heapTotal": 33832960, + "heapUsed": 22177640, + "external": 4309504, + "arrayBuffers": 320406 + }, + "retainedMemory": { + "rss": 119455744, + "heapTotal": 33832960, + "heapUsed": 14460128, + "external": 4309504, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116656 + }, + "idleMemory": { + "rss": 84951040, + "heapTotal": 31473664, + "heapUsed": 12367416, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 3, + "requests": 226990, + "errors": 0, + "elapsedMs": 5001.080833, + "rps": 45388.18858959243, + "latencyMs": { + "mean": 1.1013201527424081, + "p50": 1.032, + "p95": 1.958, + "p99": 2.112, + "max": 5.296833999993396 + }, + "clientCpuPercent": 99.4983717752678, + "serverCpuPercent": 104.26526351305455, + "serverCpuUsPerRequest": 22.975408608308737, + "serverRssMiB": 114.921875, + "serverRetainedHeapMiB": 13.65631103515625, + "idleRssMiB": 80.390625, + "server": { + "type": "stats", + "elapsedMs": 5001.846084, + "cpu": { + "user": 3984208, + "system": 1230980 + }, + "memory": { + "rss": 120504320, + "heapTotal": 33570816, + "heapUsed": 19750288, + "external": 4296991, + "arrayBuffers": 307893 + }, + "retainedMemory": { + "rss": 120553472, + "heapTotal": 33570816, + "heapUsed": 14319680, + "external": 4296991, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117728 + }, + "idleMemory": { + "rss": 84295680, + "heapTotal": 31211520, + "heapUsed": 12362608, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 3, + "requests": 235109, + "errors": 0, + "elapsedMs": 5000.719832999996, + "rps": 47015.03140577966, + "latencyMs": { + "mean": 1.0632503735713914, + "p50": 0.927, + "p95": 1.756, + "p99": 1.923, + "max": 6.0272079999995185 + }, + "clientCpuPercent": 100.31273831612803, + "serverCpuPercent": 104.06354266005047, + "serverCpuUsPerRequest": 22.13748516645471, + "serverRssMiB": 110.921875, + "serverRetainedHeapMiB": 11.962547302246094, + "idleRssMiB": 75.15625, + "server": { + "type": "stats", + "elapsedMs": 5001.484542, + "cpu": { + "user": 3923720, + "system": 1281002 + }, + "memory": { + "rss": 116310016, + "heapTotal": 32260096, + "heapUsed": 16077056, + "external": 4197952, + "arrayBuffers": 297186 + }, + "retainedMemory": { + "rss": 116326400, + "heapTotal": 31473664, + "heapUsed": 12543640, + "external": 4197952, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113600 + }, + "idleMemory": { + "rss": 78807040, + "heapTotal": 21250048, + "heapUsed": 10641272, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 3, + "requests": 212958, + "errors": 0, + "elapsedMs": 5001.186458000011, + "rps": 42581.49576873855, + "latencyMs": { + "mean": 1.173869458132577, + "p50": 1.119, + "p95": 1.371, + "p99": 2.259, + "max": 7.055916999990586 + }, + "clientCpuPercent": 96.92885959582011, + "serverCpuPercent": 104.34426478691374, + "serverCpuUsPerRequest": 24.507696353271538, + "serverRssMiB": 113.953125, + "serverRetainedHeapMiB": 13.799201965332031, + "idleRssMiB": 80.5625, + "server": { + "type": "stats", + "elapsedMs": 5001.817791, + "cpu": { + "user": 4096572, + "system": 1122538 + }, + "memory": { + "rss": 119488512, + "heapTotal": 34357248, + "heapUsed": 15591616, + "external": 4269177, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119570432, + "heapTotal": 33832960, + "heapUsed": 14469512, + "external": 4269177, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116768 + }, + "idleMemory": { + "rss": 84475904, + "heapTotal": 30949376, + "heapUsed": 12359576, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "round": 4, + "requests": 215949, + "errors": 0, + "elapsedMs": 5001.121333000003, + "rps": 43180.11614216517, + "latencyMs": { + "mean": 1.1576461992090499, + "p50": 1.103, + "p95": 1.358, + "p99": 2.225, + "max": 5.3585000000020955 + }, + "clientCpuPercent": 97.48475742490044, + "serverCpuPercent": 104.4350268726841, + "serverCpuUsPerRequest": 24.189428985547515, + "serverRssMiB": 114.078125, + "serverRetainedHeapMiB": 13.7730712890625, + "idleRssMiB": 80.859375, + "server": { + "type": "stats", + "elapsedMs": 5001.849625000001, + "cpu": { + "user": 4072488, + "system": 1151195 + }, + "memory": { + "rss": 119619584, + "heapTotal": 34095104, + "heapUsed": 17700232, + "external": 4279963, + "arrayBuffers": 290865 + }, + "retainedMemory": { + "rss": 119717888, + "heapTotal": 33832960, + "heapUsed": 14442112, + "external": 4279963, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116912 + }, + "idleMemory": { + "rss": 84787200, + "heapTotal": 31211520, + "heapUsed": 12362592, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 4, + "requests": 229189, + "errors": 0, + "elapsedMs": 5001.026540999999, + "rps": 45828.3910555235, + "latencyMs": { + "mean": 1.0907532178987682, + "p50": 1.013, + "p95": 1.95, + "p99": 2.092, + "max": 5.864667000016198 + }, + "clientCpuPercent": 99.56963753694265, + "serverCpuPercent": 104.49532452034585, + "serverCpuUsPerRequest": 22.804794296410385, + "serverRssMiB": 114.875, + "serverRetainedHeapMiB": 13.676445007324219, + "idleRssMiB": 81, + "server": { + "type": "stats", + "elapsedMs": 5001.762542, + "cpu": { + "user": 3990968, + "system": 1235640 + }, + "memory": { + "rss": 120455168, + "heapTotal": 34095104, + "heapUsed": 18523104, + "external": 4288090, + "arrayBuffers": 298992 + }, + "retainedMemory": { + "rss": 120504320, + "heapTotal": 34095104, + "heapUsed": 14340792, + "external": 4288090, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117680 + }, + "idleMemory": { + "rss": 84934656, + "heapTotal": 31473664, + "heapUsed": 12363712, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 4, + "requests": 234355, + "errors": 0, + "elapsedMs": 5000.936457999982, + "rps": 46862.22309925635, + "latencyMs": { + "mean": 1.066648095210283, + "p50": 0.939, + "p95": 1.836, + "p99": 1.967, + "max": 5.805292000004556 + }, + "clientCpuPercent": 100.20983154031545, + "serverCpuPercent": 104.09593445991055, + "serverCpuUsPerRequest": 22.216590215698407, + "serverRssMiB": 110.96875, + "serverRetainedHeapMiB": 11.979652404785156, + "idleRssMiB": 74.453125, + "server": { + "type": "stats", + "elapsedMs": 5001.702542, + "cpu": { + "user": 3930679, + "system": 1275890 + }, + "memory": { + "rss": 116359168, + "heapTotal": 31473664, + "heapUsed": 15018176, + "external": 4189309, + "arrayBuffers": 288543 + }, + "retainedMemory": { + "rss": 116375552, + "heapTotal": 31473664, + "heapUsed": 12561576, + "external": 4189309, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113648 + }, + "idleMemory": { + "rss": 78069760, + "heapTotal": 20987904, + "heapUsed": 10641320, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 4, + "requests": 213044, + "errors": 0, + "elapsedMs": 5001.121333999996, + "rps": 42599.24640332675, + "latencyMs": { + "mean": 1.1734142144861732, + "p50": 1.119, + "p95": 1.356, + "p99": 2.26, + "max": 13.683625000005122 + }, + "clientCpuPercent": 97.03337863468049, + "serverCpuPercent": 104.24153323139188, + "serverCpuUsPerRequest": 24.473639248230413, + "serverRssMiB": 114.328125, + "serverRetainedHeapMiB": 13.784942626953125, + "idleRssMiB": 81.0625, + "server": { + "type": "stats", + "elapsedMs": 5001.808625, + "cpu": { + "user": 4080422, + "system": 1133540 + }, + "memory": { + "rss": 119881728, + "heapTotal": 34095104, + "heapUsed": 15570688, + "external": 4269177, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119914496, + "heapTotal": 34095104, + "heapUsed": 14454560, + "external": 4269177, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117104 + }, + "idleMemory": { + "rss": 85000192, + "heapTotal": 31735808, + "heapUsed": 12360520, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "round": 4, + "requests": 213352, + "errors": 0, + "elapsedMs": 5001.219249999995, + "rps": 42659.997359643894, + "latencyMs": { + "mean": 1.1717270322846607, + "p50": 1.119, + "p95": 1.352, + "p99": 2.257, + "max": 5.241207999992184 + }, + "clientCpuPercent": 96.84564418966445, + "serverCpuPercent": 104.13156174341403, + "serverCpuUsPerRequest": 24.413021673103604, + "serverRssMiB": 113.859375, + "serverRetainedHeapMiB": 13.753440856933594, + "idleRssMiB": 80.625, + "server": { + "type": "stats", + "elapsedMs": 5001.91, + "cpu": { + "user": 4082641, + "system": 1125926 + }, + "memory": { + "rss": 119390208, + "heapTotal": 33832960, + "heapUsed": 15820352, + "external": 4268611, + "arrayBuffers": 279513 + }, + "retainedMemory": { + "rss": 119422976, + "heapTotal": 33832960, + "heapUsed": 14421528, + "external": 4268611, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116624 + }, + "idleMemory": { + "rss": 84541440, + "heapTotal": 31211520, + "heapUsed": 12360992, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 5, + "requests": 227669, + "errors": 0, + "elapsedMs": 5001.116209, + "rps": 45523.637221284174, + "latencyMs": { + "mean": 1.0980056653650712, + "p50": 1.026, + "p95": 1.958, + "p99": 2.106, + "max": 5.945917000004556 + }, + "clientCpuPercent": 99.43722145569524, + "serverCpuPercent": 104.47644273127892, + "serverCpuUsPerRequest": 22.953010730490316, + "serverRssMiB": 114.59375, + "serverRetainedHeapMiB": 13.730331420898438, + "idleRssMiB": 80.5625, + "server": { + "type": "stats", + "elapsedMs": 5001.786875, + "cpu": { + "user": 3978383, + "system": 1247306 + }, + "memory": { + "rss": 120160256, + "heapTotal": 34357248, + "heapUsed": 17159032, + "external": 4278673, + "arrayBuffers": 289575 + }, + "retainedMemory": { + "rss": 120193024, + "heapTotal": 33832960, + "heapUsed": 14397296, + "external": 4278673, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117376 + }, + "idleMemory": { + "rss": 84475904, + "heapTotal": 31473664, + "heapUsed": 12364216, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 5, + "requests": 233914, + "errors": 0, + "elapsedMs": 5000.953125, + "rps": 46773.88372841427, + "latencyMs": { + "mean": 1.0686885070410843, + "p50": 0.948, + "p95": 1.853, + "p99": 1.977, + "max": 22.398916000005556 + }, + "clientCpuPercent": 100.183842455032, + "serverCpuPercent": 104.04404798112206, + "serverCpuUsPerRequest": 22.2469497336628, + "serverRssMiB": 111.21875, + "serverRetainedHeapMiB": 12.050796508789062, + "idleRssMiB": 74.9375, + "server": { + "type": "stats", + "elapsedMs": 5001.605667, + "cpu": { + "user": 3929216, + "system": 1274657 + }, + "memory": { + "rss": 116621312, + "heapTotal": 31997952, + "heapUsed": 15726464, + "external": 4195372, + "arrayBuffers": 294606 + }, + "retainedMemory": { + "rss": 116719616, + "heapTotal": 31997952, + "heapUsed": 12636176, + "external": 4195372, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113984 + }, + "idleMemory": { + "rss": 78577664, + "heapTotal": 20987904, + "heapUsed": 10641304, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 5, + "requests": 212531, + "errors": 0, + "elapsedMs": 5001.167707999994, + "rps": 42496.27535186034, + "latencyMs": { + "mean": 1.1762291065021213, + "p50": 1.122, + "p95": 1.374, + "p99": 2.261, + "max": 6.006624999979977 + }, + "clientCpuPercent": 96.98379025045097, + "serverCpuPercent": 104.43341726922016, + "serverCpuUsPerRequest": 24.57750634025154, + "serverRssMiB": 114.25, + "serverRetainedHeapMiB": 13.812469482421875, + "idleRssMiB": 80.9375, + "server": { + "type": "stats", + "elapsedMs": 5001.73425, + "cpu": { + "user": 4093597, + "system": 1129885 + }, + "memory": { + "rss": 119799808, + "heapTotal": 34095104, + "heapUsed": 21626448, + "external": 4309038, + "arrayBuffers": 317568 + }, + "retainedMemory": { + "rss": 119914496, + "heapTotal": 34095104, + "heapUsed": 14483424, + "external": 4309038, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117104 + }, + "idleMemory": { + "rss": 84869120, + "heapTotal": 31211520, + "heapUsed": 12360720, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "round": 5, + "requests": 212600, + "errors": 0, + "elapsedMs": 5001.200083999982, + "rps": 42509.79693457127, + "latencyMs": { + "mean": 1.1758828274882294, + "p50": 1.123, + "p95": 1.365, + "p99": 2.269, + "max": 5.755541999998968 + }, + "clientCpuPercent": 96.73890103853756, + "serverCpuPercent": 104.21083428467158, + "serverCpuUsPerRequest": 24.518527751646285, + "serverRssMiB": 114.015625, + "serverRetainedHeapMiB": 13.758842468261719, + "idleRssMiB": 80.46875, + "server": { + "type": "stats", + "elapsedMs": 5002.012541, + "cpu": { + "user": 4097161, + "system": 1115478 + }, + "memory": { + "rss": 119554048, + "heapTotal": 33832960, + "heapUsed": 15568408, + "external": 4266805, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119619584, + "heapTotal": 33832960, + "heapUsed": 14427192, + "external": 4266805, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116816 + }, + "idleMemory": { + "rss": 84377600, + "heapTotal": 31211520, + "heapUsed": 12362656, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "round": 5, + "requests": 214412, + "errors": 0, + "elapsedMs": 5001.132041999983, + "rps": 42872.69326211498, + "latencyMs": { + "mean": 1.1659214593446043, + "p50": 1.11, + "p95": 1.361, + "p99": 2.24, + "max": 17.789916000008816 + }, + "clientCpuPercent": 97.00259779703727, + "serverCpuPercent": 104.4639578056826, + "serverCpuUsPerRequest": 24.368869279704494, + "serverRssMiB": 113.34375, + "serverRetainedHeapMiB": 13.847335815429688, + "idleRssMiB": 80.875, + "server": { + "type": "stats", + "elapsedMs": 5001.704041999999, + "cpu": { + "user": 4089771, + "system": 1135207 + }, + "memory": { + "rss": 118849536, + "heapTotal": 33832960, + "heapUsed": 17173112, + "external": 4276093, + "arrayBuffers": 286995 + }, + "retainedMemory": { + "rss": 118882304, + "heapTotal": 33832960, + "heapUsed": 14519984, + "external": 4276093, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116096 + }, + "idleMemory": { + "rss": 84803584, + "heapTotal": 31473664, + "heapUsed": 12362344, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 6, + "requests": 233992, + "errors": 0, + "elapsedMs": 5000.774583999999, + "rps": 46791.151264577784, + "latencyMs": { + "mean": 1.0682969796617032, + "p50": 0.978, + "p95": 1.732, + "p99": 1.961, + "max": 5.6118749999732245 + }, + "clientCpuPercent": 100.18174016539517, + "serverCpuPercent": 104.05929833476232, + "serverCpuUsPerRequest": 22.242427091524497, + "serverRssMiB": 111.453125, + "serverRetainedHeapMiB": 11.989128112792969, + "idleRssMiB": 75.265625, + "server": { + "type": "stats", + "elapsedMs": 5001.52325, + "cpu": { + "user": 3939361, + "system": 1265189 + }, + "memory": { + "rss": 116867072, + "heapTotal": 31735808, + "heapUsed": 19230752, + "external": 4223623, + "arrayBuffers": 322857 + }, + "retainedMemory": { + "rss": 117047296, + "heapTotal": 31473664, + "heapUsed": 12571512, + "external": 4223623, + "arrayBuffers": 277690 + }, + "maxRssKiB": 114304 + }, + "idleMemory": { + "rss": 78921728, + "heapTotal": 20463616, + "heapUsed": 10641248, + "external": 4178413, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 6, + "requests": 212024, + "errors": 0, + "elapsedMs": 5001.018042000011, + "rps": 42396.167784111254, + "latencyMs": { + "mean": 1.1790695990076605, + "p50": 1.124, + "p95": 1.381, + "p99": 2.279, + "max": 5.427540999982739 + }, + "clientCpuPercent": 96.48177550006106, + "serverCpuPercent": 104.06242454409895, + "serverCpuUsPerRequest": 24.54893785609176, + "serverRssMiB": 114.046875, + "serverRetainedHeapMiB": 13.725273132324219, + "idleRssMiB": 81.171875, + "server": { + "type": "stats", + "elapsedMs": 5001.770834000001, + "cpu": { + "user": 4085121, + "system": 1119843 + }, + "memory": { + "rss": 119586816, + "heapTotal": 33832960, + "heapUsed": 22006264, + "external": 4311618, + "arrayBuffers": 320148 + }, + "retainedMemory": { + "rss": 119619584, + "heapTotal": 33832960, + "heapUsed": 14391992, + "external": 4311618, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116816 + }, + "idleMemory": { + "rss": 85114880, + "heapTotal": 31211520, + "heapUsed": 12360672, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "round": 6, + "requests": 213138, + "errors": 0, + "elapsedMs": 5001.138916999975, + "rps": 42617.89235157954, + "latencyMs": { + "mean": 1.172917119636093, + "p50": 1.119, + "p95": 1.362, + "p99": 2.261, + "max": 6.244541000021854 + }, + "clientCpuPercent": 97.07856711391615, + "serverCpuPercent": 104.26771829292831, + "serverCpuUsPerRequest": 24.469184284360367, + "serverRssMiB": 113.8125, + "serverRetainedHeapMiB": 13.750892639160156, + "idleRssMiB": 80.84375, + "server": { + "type": "stats", + "elapsedMs": 5001.848209, + "cpu": { + "user": 4091205, + "system": 1124108 + }, + "memory": { + "rss": 119341056, + "heapTotal": 34095104, + "heapUsed": 17812568, + "external": 4281898, + "arrayBuffers": 292800 + }, + "retainedMemory": { + "rss": 119341056, + "heapTotal": 34095104, + "heapUsed": 14418856, + "external": 4281898, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116544 + }, + "idleMemory": { + "rss": 84770816, + "heapTotal": 31211520, + "heapUsed": 12363032, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "round": 6, + "requests": 215151, + "errors": 0, + "elapsedMs": 5001.253582999983, + "rps": 43019.414318708165, + "latencyMs": { + "mean": 1.1619262825039027, + "p50": 1.106, + "p95": 1.35, + "p99": 2.238, + "max": 6.932457999995677 + }, + "clientCpuPercent": 97.38726339643827, + "serverCpuPercent": 104.41340764812946, + "serverCpuUsPerRequest": 24.27389600792002, + "serverRssMiB": 114.171875, + "serverRetainedHeapMiB": 13.836471557617188, + "idleRssMiB": 80.765625, + "server": { + "type": "stats", + "elapsedMs": 5001.803042, + "cpu": { + "user": 4073182, + "system": 1149371 + }, + "memory": { + "rss": 119717888, + "heapTotal": 33832960, + "heapUsed": 16094392, + "external": 4270030, + "arrayBuffers": 280932 + }, + "retainedMemory": { + "rss": 119734272, + "heapTotal": 33832960, + "heapUsed": 14508592, + "external": 4270030, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116928 + }, + "idleMemory": { + "rss": 84688896, + "heapTotal": 31473664, + "heapUsed": 12363744, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 6, + "requests": 228006, + "errors": 0, + "elapsedMs": 5001.055499999988, + "rps": 45591.57561838707, + "latencyMs": { + "mean": 1.0963869911186397, + "p50": 1.021, + "p95": 1.963, + "p99": 2.108, + "max": 5.781083000008948 + }, + "clientCpuPercent": 99.58245814308624, + "serverCpuPercent": 104.4258810824941, + "serverCpuUsPerRequest": 22.9076559388788, + "serverRssMiB": 115.078125, + "serverRetainedHeapMiB": 13.745559692382812, + "idleRssMiB": 80.9375, + "server": { + "type": "stats", + "elapsedMs": 5001.713125, + "cpu": { + "user": 3969022, + "system": 1254061 + }, + "memory": { + "rss": 120668160, + "heapTotal": 34619392, + "heapUsed": 16592528, + "external": 4273900, + "arrayBuffers": 284802 + }, + "retainedMemory": { + "rss": 120700928, + "heapTotal": 34095104, + "heapUsed": 14413264, + "external": 4273900, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117872 + }, + "idleMemory": { + "rss": 84869120, + "heapTotal": 31211520, + "heapUsed": 12364400, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "round": 7, + "requests": 212457, + "errors": 0, + "elapsedMs": 5001.139500000019, + "rps": 42481.71841637274, + "latencyMs": { + "mean": 1.176643371967047, + "p50": 1.122, + "p95": 1.382, + "p99": 2.27, + "max": 6.779624999995576 + }, + "clientCpuPercent": 96.67128861332465, + "serverCpuPercent": 104.4671124461984, + "serverCpuUsPerRequest": 24.59473681733245, + "serverRssMiB": 113.96875, + "serverRetainedHeapMiB": 13.720344543457031, + "idleRssMiB": 80.78125, + "server": { + "type": "stats", + "elapsedMs": 5001.8842079999995, + "cpu": { + "user": 4089062, + "system": 1136262 + }, + "memory": { + "rss": 119504896, + "heapTotal": 33832960, + "heapUsed": 21077720, + "external": 4304910, + "arrayBuffers": 313440 + }, + "retainedMemory": { + "rss": 119586816, + "heapTotal": 33832960, + "heapUsed": 14386824, + "external": 4304910, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116784 + }, + "idleMemory": { + "rss": 84705280, + "heapTotal": 31211520, + "heapUsed": 12362112, + "external": 4334653, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "round": 7, + "requests": 212656, + "errors": 0, + "elapsedMs": 5001.139750000002, + "rps": 42521.50722242863, + "latencyMs": { + "mean": 1.1755754544193329, + "p50": 1.122, + "p95": 1.379, + "p99": 2.265, + "max": 7.862624999979744 + }, + "clientCpuPercent": 96.8939130325242, + "serverCpuPercent": 104.19991405893599, + "serverCpuUsPerRequest": 24.509315514257768, + "serverRssMiB": 114.015625, + "serverRetainedHeapMiB": 13.750755310058594, + "idleRssMiB": 80.84375, + "server": { + "type": "stats", + "elapsedMs": 5001.974375, + "cpu": { + "user": 4094305, + "system": 1117748 + }, + "memory": { + "rss": 119554048, + "heapTotal": 33832960, + "heapUsed": 15619928, + "external": 4266805, + "arrayBuffers": 277707 + }, + "retainedMemory": { + "rss": 119603200, + "heapTotal": 33832960, + "heapUsed": 14418712, + "external": 4266805, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116800 + }, + "idleMemory": { + "rss": 84770816, + "heapTotal": 31473664, + "heapUsed": 12363352, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "round": 7, + "requests": 214434, + "errors": 0, + "elapsedMs": 5001.180625000037, + "rps": 42876.675744939406, + "latencyMs": { + "mean": 1.165820228597199, + "p50": 1.109, + "p95": 1.38, + "p99": 2.245, + "max": 5.010416000033729 + }, + "clientCpuPercent": 97.31164228846391, + "serverCpuPercent": 104.51047075482708, + "serverCpuUsPerRequest": 24.378246919798165, + "serverRssMiB": 113.84375, + "serverRetainedHeapMiB": 13.777885437011719, + "idleRssMiB": 80.53125, + "server": { + "type": "stats", + "elapsedMs": 5001.915083, + "cpu": { + "user": 4092744, + "system": 1134781 + }, + "memory": { + "rss": 119373824, + "heapTotal": 34095104, + "heapUsed": 17548216, + "external": 4279189, + "arrayBuffers": 290091 + }, + "retainedMemory": { + "rss": 119455744, + "heapTotal": 33832960, + "heapUsed": 14447160, + "external": 4279189, + "arrayBuffers": 277690 + }, + "maxRssKiB": 116656 + }, + "idleMemory": { + "rss": 84443136, + "heapTotal": 31473664, + "heapUsed": 12363216, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "round": 7, + "requests": 228290, + "errors": 0, + "elapsedMs": 5000.990292000002, + "rps": 45648.958840250416, + "latencyMs": { + "mean": 1.0950187858733258, + "p50": 1.014, + "p95": 1.959, + "p99": 2.107, + "max": 6.930666000000201 + }, + "clientCpuPercent": 99.53402644997571, + "serverCpuPercent": 104.4735225465477, + "serverCpuUsPerRequest": 22.889841867799728, + "serverRssMiB": 114.625, + "serverRetainedHeapMiB": 13.677200317382812, + "idleRssMiB": 81.125, + "server": { + "type": "stats", + "elapsedMs": 5001.766833, + "cpu": { + "user": 3976604, + "system": 1248918 + }, + "memory": { + "rss": 120193024, + "heapTotal": 34357248, + "heapUsed": 22113408, + "external": 4314019, + "arrayBuffers": 324921 + }, + "retainedMemory": { + "rss": 120242176, + "heapTotal": 33832960, + "heapUsed": 14341584, + "external": 4314019, + "arrayBuffers": 277690 + }, + "maxRssKiB": 117424 + }, + "idleMemory": { + "rss": 85065728, + "heapTotal": 31735808, + "heapUsed": 12364208, + "external": 4332281, + "arrayBuffers": 212115 + } + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "round": 7, + "requests": 234218, + "errors": 0, + "elapsedMs": 5000.599500000011, + "rps": 46837.984125703224, + "latencyMs": { + "mean": 1.0672926279021642, + "p50": 0.951, + "p95": 1.854, + "p99": 1.99, + "max": 6.1865409999736585 + }, + "clientCpuPercent": 100.11457626230593, + "serverCpuPercent": 104.14752982353234, + "serverCpuUsPerRequest": 22.23827374497263, + "serverRssMiB": 111.046875, + "serverRetainedHeapMiB": 12.069816589355469, + "idleRssMiB": 76.109375, + "server": { + "type": "stats", + "elapsedMs": 5001.1786250000005, + "cpu": { + "user": 3947322, + "system": 1261282 + }, + "memory": { + "rss": 116441088, + "heapTotal": 31735808, + "heapUsed": 19004048, + "external": 4222591, + "arrayBuffers": 321825 + }, + "retainedMemory": { + "rss": 116457472, + "heapTotal": 31735808, + "heapUsed": 12656120, + "external": 4222591, + "arrayBuffers": 277690 + }, + "maxRssKiB": 113728 + }, + "idleMemory": { + "rss": 79806464, + "heapTotal": 21250048, + "heapUsed": 10643496, + "external": 4688469, + "arrayBuffers": 212115 + } + } + ], + "finishedAt": "2026-10-27T16:28:28.827Z", + "elapsedSeconds": 284.418437042 + }, + "groups": [ + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "native-zod", + "rounds": 7, + "errors": 0, + "rps": 46837.984125703224, + "cpuUs": 22.237515230542314, + "meanMs": 1.0672926279021642, + "p95Ms": 1.836, + "rssMiB": 111.046875, + "heapMiB": 11.989128112792969, + "clientCpu": 100.20983154031545 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "erest", + "rounds": 7, + "errors": 0, + "rps": 42581.49576873855, + "cpuUs": 24.507696353271538, + "meanMs": 1.173869458132577, + "p95Ms": 1.371, + "rssMiB": 114.1875, + "heapMiB": 13.784942626953125, + "clientCpu": 96.98379025045097 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "rounds": 7, + "errors": 0, + "rps": 42659.997359643894, + "cpuUs": 24.413021673103604, + "meanMs": 1.1717270322846607, + "p95Ms": 1.362, + "rssMiB": 114.015625, + "heapMiB": 13.750892639160156, + "clientCpu": 97.07856711391615 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "rounds": 7, + "errors": 0, + "rps": 43101.894760773306, + "cpuUs": 24.189428985547515, + "meanMs": 1.1597070238309282, + "p95Ms": 1.356, + "rssMiB": 113.984375, + "heapMiB": 13.777885437011719, + "clientCpu": 97.48475742490044 + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "rounds": 7, + "errors": 0, + "rps": 45648.958840250416, + "cpuUs": 22.889841867799728, + "meanMs": 1.0950187858733258, + "p95Ms": 1.958, + "rssMiB": 114.703125, + "heapMiB": 13.730331420898438, + "clientCpu": 99.56963753694265 + } + ], + "comparisons": [ + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "control", + "versusIsolatedControl": null, + "medianGainPercent": 0.1426104014656815, + "minGainPercent": -0.3319918335288996, + "maxGainPercent": 2.5447499354310343, + "medianCpuUsDelta": -0.07975357173139486, + "medianP95MsDelta": -0.0029999999999998916, + "medianRssMiBDelta": -0.078125, + "medianHeapMiBDelta": -0.03150177001953125, + "allRoundsPositive": false, + "pairs": [ + { + "round": 1, + "throughputPercent": 1.2853622481034277, + "cpuUsDelta": -0.3281817924653332, + "p95MsDelta": 0.025000000000000133, + "rssMiBDelta": 0.109375, + "heapMiBDelta": -0.0760040283203125 + }, + { + "round": 2, + "throughputPercent": -0.3319918335288996, + "cpuUsDelta": 0.049399994527501434, + "p95MsDelta": 0.02400000000000002, + "rssMiBDelta": -0.015625, + "heapMiBDelta": 0.00279998779296875 + }, + { + "round": 3, + "throughputPercent": 2.5447499354310343, + "cpuUsDelta": -0.6483011761016755, + "p95MsDelta": 0.01200000000000001, + "rssMiBDelta": -0.078125, + "heapMiBDelta": -0.0888824462890625 + }, + { + "round": 4, + "throughputPercent": 0.1426104014656815, + "cpuUsDelta": -0.06061757512680899, + "p95MsDelta": -0.0040000000000000036, + "rssMiBDelta": -0.46875, + "heapMiBDelta": -0.03150177001953125 + }, + { + "round": 5, + "throughputPercent": 0.03181827724658692, + "cpuUsDelta": -0.05897858860525318, + "p95MsDelta": -0.009000000000000119, + "rssMiBDelta": -0.234375, + "heapMiBDelta": -0.05362701416015625 + }, + { + "round": 6, + "throughputPercent": 0.5229825690787671, + "cpuUsDelta": -0.07975357173139486, + "p95MsDelta": -0.018999999999999906, + "rssMiBDelta": -0.234375, + "heapMiBDelta": 0.0256195068359375 + }, + { + "round": 7, + "throughputPercent": 0.09366100887422402, + "cpuUsDelta": -0.08542130307468199, + "p95MsDelta": -0.0029999999999998916, + "rssMiBDelta": 0.046875, + "heapMiBDelta": 0.0304107666015625 + } + ] + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "foreach", + "versusIsolatedControl": { + "medianGainPercent": 0.8536769255855559, + "minGainPercent": -1.2898029415841727, + "maxGainPercent": 1.2192189749484328, + "values": [ + -1.1691658951270778, + 1.1975796189295451, + -1.2898029415841727, + 1.2192189749484328, + 0.8536769255855559, + 0.9421441206342029, + 0.8352679519399553 + ] + }, + "medianGainPercent": 0.9297112812047814, + "minGainPercent": 0.10116833594269181, + "maxGainPercent": 1.4700539392394907, + "medianCpuUsDelta": -0.21648989753428438, + "medianP95MsDelta": -0.0020000000000000018, + "medianRssMiBDelta": -0.125, + "medianHeapMiBDelta": -0.00894927978515625, + "allRoundsPositive": true, + "pairs": [ + { + "round": 1, + "throughputPercent": 0.10116833594269181, + "cpuUsDelta": 0.016353503951894055, + "p95MsDelta": 0.027000000000000135, + "rssMiBDelta": 0.078125, + "heapMiBDelta": -0.02054595947265625 + }, + { + "round": 2, + "throughputPercent": 0.8616119188658011, + "cpuUsDelta": -0.17201240880438817, + "p95MsDelta": 0.006000000000000005, + "rssMiBDelta": -0.203125, + "heapMiBDelta": -0.04943084716796875 + }, + { + "round": 3, + "throughputPercent": 1.222124734323704, + "cpuUsDelta": -0.3806226846873848, + "p95MsDelta": -0.038999999999999924, + "rssMiBDelta": -0.0625, + "heapMiBDelta": -0.00894927978515625 + }, + { + "round": 4, + "throughputPercent": 1.3635681094890328, + "cpuUsDelta": -0.2842102626828975, + "p95MsDelta": 0.0020000000000000018, + "rssMiBDelta": -0.25, + "heapMiBDelta": -0.011871337890625 + }, + { + "round": 5, + "throughputPercent": 0.8857668281231135, + "cpuUsDelta": -0.20863706054704423, + "p95MsDelta": -0.013000000000000123, + "rssMiBDelta": -0.90625, + "heapMiBDelta": 0.0348663330078125 + }, + { + "round": 6, + "throughputPercent": 1.4700539392394907, + "cpuUsDelta": -0.2750418481717425, + "p95MsDelta": -0.030999999999999917, + "rssMiBDelta": 0.125, + "heapMiBDelta": 0.11119842529296875 + }, + { + "round": 7, + "throughputPercent": 0.9297112812047814, + "cpuUsDelta": -0.21648989753428438, + "p95MsDelta": -0.0020000000000000018, + "rssMiBDelta": -0.125, + "heapMiBDelta": 0.0575408935546875 + } + ] + }, + { + "framework": "h3", + "scenario": "post", + "concurrency": 50, + "mode": "node-headers", + "versusIsolatedControl": { + "medianGainPercent": 6.977546525003864, + "minGainPercent": 3.9279297328707052, + "maxGainPercent": 7.427083666153456, + "values": [ + 3.9279297328707052, + 6.6275173032981805, + 3.9461737046575074, + 7.427083666153456, + 7.089754607277099, + 6.977546525003864, + 7.354987680615821 + ] + }, + "medianGainPercent": 7.123828722300729, + "minGainPercent": 5.263780106892479, + "maxGainPercent": 7.580285861452629, + "medianCpuUsDelta": -1.6244956097612224, + "medianP95MsDelta": 0.5839999999999999, + "medianRssMiBDelta": 0.546875, + "medianHeapMiBDelta": -0.07582855224609375, + "allRoundsPositive": true, + "pairs": [ + { + "round": 1, + "throughputPercent": 5.263780106892479, + "cpuUsDelta": -1.1740034527147287, + "p95MsDelta": 0.532, + "rssMiBDelta": 0.453125, + "heapMiBDelta": -0.015167236328125 + }, + { + "round": 2, + "throughputPercent": 6.273522653556629, + "cpuUsDelta": -1.4118215224586308, + "p95MsDelta": 0.601, + "rssMiBDelta": 0.515625, + "heapMiBDelta": -0.07582855224609375 + }, + { + "round": 3, + "throughputPercent": 6.5913438928898005, + "cpuUsDelta": -1.532287744962801, + "p95MsDelta": 0.587, + "rssMiBDelta": 0.96875, + "heapMiBDelta": -0.14289093017578125 + }, + { + "round": 4, + "throughputPercent": 7.580285861452629, + "cpuUsDelta": -1.6688449518200272, + "p95MsDelta": 0.5939999999999999, + "rssMiBDelta": 0.546875, + "heapMiBDelta": -0.10849761962890625 + }, + { + "round": 5, + "throughputPercent": 7.123828722300729, + "cpuUsDelta": -1.6244956097612224, + "p95MsDelta": 0.5839999999999999, + "rssMiBDelta": 0.34375, + "heapMiBDelta": -0.0821380615234375 + }, + { + "round": 6, + "throughputPercent": 7.537020446157761, + "cpuUsDelta": -1.641281917212961, + "p95MsDelta": 0.5820000000000001, + "rssMiBDelta": 1.03125, + "heapMiBDelta": 0.02028656005859375 + }, + { + "round": 7, + "throughputPercent": 7.455537445154281, + "cpuUsDelta": -1.7048949495327221, + "p95MsDelta": 0.5770000000000002, + "rssMiBDelta": 0.65625, + "heapMiBDelta": -0.04314422607421875 + } + ] + } + ] + } + ] +} From 4c3941f29e1bec70e3aee9e79615cd8af97ccc5c Mon Sep 17 00:00:00 2001 From: yourtion Date: Wed, 28 Oct 2026 00:33:53 +0800 Subject: [PATCH 11/12] bench: keep generated optimization reports local --- benchmarks/results/mac-optimization.json | 11404 --------------------- 1 file changed, 11404 deletions(-) delete mode 100644 benchmarks/results/mac-optimization.json diff --git a/benchmarks/results/mac-optimization.json b/benchmarks/results/mac-optimization.json deleted file mode 100644 index ff30eac..0000000 --- a/benchmarks/results/mac-optimization.json +++ /dev/null @@ -1,11404 +0,0 @@ -{ - "generatedAt": "2026-10-27T16:31:24.652Z", - "method": "Compare candidate to erest control within the same round, framework, scenario and concurrency. Profile runs are excluded from performance comparisons. Paired ranges are not confidence intervals.", - "profiles": { - "commit": "0d555732d1f5cac95f54a2281c4bcbd1121e0e24", - "environment": { - "node": "v24.22.1", - "os": "Darwin 27.2.0 arm64", - "platform": "darwin", - "cpu": "Apple M2", - "logicalCpus": 8, - "availableParallelism": 8, - "systemMemoryBytes": 17179869184, - "cpuMax": null, - "memoryMax": null, - "versions": { - "erest": "3.4.0", - "packages/erest-express/": "3.4.0", - "packages/erest-koa/": "3.4.0", - "packages/erest-leizmweb/": "3.4.0", - "node_modules/express/": "5.2.1", - "node_modules/koa/": "3.0.0", - "node_modules/koa-router/": "13.1.1", - "node_modules/koa-bodyparser/": "4.4.1", - "node_modules/@leizm/web/": "2.7.3", - "node_modules/zod/": "4.4.3", - "packages/erest-h3/": "3.4.0", - "node_modules/h3/": "2.0.8" - } - }, - "config": { - "frameworks": [ - "express", - "leizmweb", - "h3" - ], - "scenarios": [ - "post" - ], - "concurrency": [ - 50 - ], - "rounds": 1, - "durationMs": 2000, - "warmupMs": 1000, - "serverCpu": null - }, - "profileRunSha256": "238a4f22071e347209529a1817e8e3f03fd56fe99d40da62361d0653c914ad79", - "summarizerSha256": "11990c084c53ecf47bc1b16c848da3c4d1a69c84cdaed0322bf6342645d28b9e", - "window": "Last 2000ms of each profile, including stop/forced GC/exit. Sampled self time is approximate and cannot isolate allocations or prove causality. Profile timings are excluded from optimization comparisons.", - "profiles": [ - { - "file": "express-post-c50-erest-r1.cpuprofile", - "sha256": "8a9c801ca63a9d21b9446c589999a9b94218309d9a7a651ff2f8a2c96c7d579b", - "frames": [ - { - "function": "writev", - "source": "", - "line": 0, - "percent": 11.449891013635666 - }, - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 9.065436302830648 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 7.118376535518159 - }, - { - "function": "handle", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/application.js", - "line": 152, - "percent": 6.887308449154775 - }, - { - "function": "stringify", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 1029, - "percent": 2.9448060662495146 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", - "line": 106, - "percent": 2.9115178669161783 - }, - { - "function": "Hash", - "source": "node:internal/crypto/hash", - "line": 112, - "percent": 2.1220977163595505 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/body-parser@2.3.0_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", - "line": 76, - "percent": 1.9243678116107839 - }, - { - "function": "runChecks", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 33, - "percent": 1.8826326067409103 - }, - { - "function": "setCharset", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/utils.js", - "line": 225, - "percent": 1.7514791006588166 - }, - { - "function": "setHeader", - "source": "node:_http_outgoing", - "line": 700, - "percent": 1.486922885836971 - }, - { - "function": "match", - "source": "node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js", - "line": 233, - "percent": 1.1807814129890954 - }, - { - "function": "json", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 239, - "percent": 1.143294702028131 - }, - { - "function": "getHeader", - "source": "node:_http_outgoing", - "line": 801, - "percent": 1.1246513111102114 - }, - { - "function": "mimeMatch", - "source": "node_modules/.pnpm/type-is@2.1.0/node_modules/type-is/index.js", - "line": 194, - "percent": 1.0663219888549509 - }, - { - "function": "digest", - "source": "node:internal/crypto/hash", - "line": 204, - "percent": 1.0495779246257202 - }, - { - "function": "header", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 672, - "percent": 1.0080926311622531 - }, - { - "function": "send", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 125, - "percent": 0.9913485669330223 - }, - { - "function": "(anonymous)", - "source": "node_modules/.pnpm/router@2.2.0_supports-color@7.2.0/node_modules/router/index.js", - "line": 682, - "percent": 0.9392670298379224 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 0.9059288482233049 - }, - { - "function": "addKeyVal", - "source": "node:querystring", - "line": 286, - "percent": 0.8600950962883658 - }, - { - "function": "writevGeneric", - "source": "node:internal/stream_base_commons", - "line": 72, - "percent": 0.8580958050371142 - }, - { - "function": "inst._zod.run", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 92, - "percent": 0.8495988172192958 - }, - { - "function": "format", - "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", - "line": 65, - "percent": 0.8309054440200948 - }, - { - "function": "_storeHeader", - "source": "node:_http_outgoing", - "line": 456, - "percent": 0.749784201500568 - } - ] - }, - { - "file": "express-post-c50-native-r1.cpuprofile", - "sha256": "b7dc664f9eba1608f358de2a301b13075ca198165b344341fb4ce1328636dc29", - "frames": [ - { - "function": "writev", - "source": "", - "line": 0, - "percent": 24.03045166605346 - }, - { - "function": "handle", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/application.js", - "line": 152, - "percent": 10.01266736518804 - }, - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 7.931700206357077 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 5.1301329323500715 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/body-parser@2.3.0_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", - "line": 76, - "percent": 2.4453913585974116 - }, - { - "function": "Hash", - "source": "node:internal/crypto/hash", - "line": 112, - "percent": 2.178846799865628 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", - "line": 106, - "percent": 2.1639998880232914 - }, - { - "function": "digest", - "source": "node:internal/crypto/hash", - "line": 204, - "percent": 2.111910722569706 - }, - { - "function": "writevGeneric", - "source": "node:internal/stream_base_commons", - "line": 72, - "percent": 1.9060035512613376 - }, - { - "function": "setHeader", - "source": "node:_http_outgoing", - "line": 700, - "percent": 1.8830083342664727 - }, - { - "function": "writeHead", - "source": "node:_http_server", - "line": 408, - "percent": 1.7579343496552717 - }, - { - "function": "_storeHeader", - "source": "node:_http_outgoing", - "line": 456, - "percent": 1.5184341656935358 - }, - { - "function": "match", - "source": "node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js", - "line": 233, - "percent": 1.470594116423784 - }, - { - "function": "stringify", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 1029, - "percent": 1.4642954265512773 - }, - { - "function": "_send", - "source": "node:_http_outgoing", - "line": 400, - "percent": 1.1476612864524178 - }, - { - "function": "update", - "source": "node:internal/crypto/hash", - "line": 186, - "percent": 1.1247660486618782 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 1.0163885911730361 - }, - { - "function": "output", - "source": "benchmarks/fixture.mjs", - "line": 22, - "percent": 0.9726976788827923 - }, - { - "function": "getHeader", - "source": "node:_http_outgoing", - "line": 801, - "percent": 0.9519519939852511 - }, - { - "function": "nextTick", - "source": "node:internal/process/task_queues", - "line": 113, - "percent": 0.9038619967046854 - }, - { - "function": "clearBuffer", - "source": "node:internal/streams/writable", - "line": 746, - "percent": 0.8456740997872442 - }, - { - "function": "RegExp: [^\\t\\x20-\\x7e\\x80-\\xff]", - "source": "", - "line": 0, - "percent": 0.8206792987058691 - }, - { - "function": "fastparse", - "source": "node_modules/.pnpm/parseurl@1.3.3/node_modules/parseurl/index.js", - "line": 95, - "percent": 0.7560927327115959 - }, - { - "function": "decodeParam", - "source": "node_modules/.pnpm/router@2.2.0_supports-color@7.2.0/node_modules/router/lib/layer.js", - "line": 219, - "percent": 0.6790087661766353 - }, - { - "function": "json", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 239, - "percent": 0.664461791947275 - } - ] - }, - { - "file": "express-post-c50-native-zod-r1.cpuprofile", - "sha256": "7fb140a26adf5f4f07555bdfbeb4a86f85e89870c5c9bc741b814956eab34d2b", - "frames": [ - { - "function": "writev", - "source": "", - "line": 0, - "percent": 10.689836966706228 - }, - { - "function": "handle", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/application.js", - "line": 152, - "percent": 10.14034605534387 - }, - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 6.750452870260479 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 5.821775251421076 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", - "line": 106, - "percent": 4.984746080329814 - }, - { - "function": "Hash", - "source": "node:internal/crypto/hash", - "line": 112, - "percent": 2.694284464988444 - }, - { - "function": "stringify", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 1029, - "percent": 1.9530514085826722 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/body-parser@2.3.0_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", - "line": 76, - "percent": 1.865650571553501 - }, - { - "function": "setHeader", - "source": "node:_http_outgoing", - "line": 700, - "percent": 1.7426697482665998 - }, - { - "function": "_storeHeader", - "source": "node:_http_outgoing", - "line": 456, - "percent": 1.6365294521831468 - }, - { - "function": "digest", - "source": "node:internal/crypto/hash", - "line": 204, - "percent": 1.5178961833968392 - }, - { - "function": "setCharset", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/utils.js", - "line": 225, - "percent": 1.4428883752889 - }, - { - "function": "format", - "source": "node_modules/.pnpm/content-type@1.0.5/node_modules/content-type/index.js", - "line": 65, - "percent": 1.2908239115497533 - }, - { - "function": "writeHead", - "source": "node:_http_server", - "line": 408, - "percent": 1.2637891186207757 - }, - { - "function": "contentType", - "source": "node_modules/.pnpm/mime-types@3.0.1/node_modules/mime-types/index.js", - "line": 79, - "percent": 1.2533449934411893 - }, - { - "function": "update", - "source": "node:internal/crypto/hash", - "line": 186, - "percent": 1.2493972140670873 - }, - { - "function": "match", - "source": "node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js", - "line": 233, - "percent": 1.0805921669061154 - }, - { - "function": "mimeMatch", - "source": "node_modules/.pnpm/type-is@2.1.0/node_modules/type-is/index.js", - "line": 194, - "percent": 0.9682053844712349 - }, - { - "function": "handleRequest", - "source": "node_modules/.pnpm/router@2.2.0_supports-color@7.2.0/node_modules/router/lib/layer.js", - "line": 142, - "percent": 0.94936598163533 - }, - { - "function": "runChecks", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 33, - "percent": 0.8808045474420638 - }, - { - "function": "header", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 672, - "percent": 0.8474732962708476 - }, - { - "function": "readStream", - "source": "node_modules/.pnpm/raw-body@3.0.2/node_modules/raw-body/index.js", - "line": 155, - "percent": 0.8474233243800363 - }, - { - "function": "json", - "source": "node_modules/.pnpm/express@5.2.1_supports-color@7.2.0/node_modules/express/lib/response.js", - "line": 239, - "percent": 0.8412767818102317 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 0.8411268661377974 - }, - { - "function": "addKeyVal", - "source": "node:querystring", - "line": 286, - "percent": 0.7744643637953651 - } - ] - }, - { - "file": "h3-post-c50-erest-r1.cpuprofile", - "sha256": "c9bcb9e78a6c05645884c8b634833c3b858659f41f19ec5a8a279a4521f196bd", - "frames": [ - { - "function": "writev", - "source": "", - "line": 0, - "percent": 21.958631026729954 - }, - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 14.813739695228579 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 8.483387459405446 - }, - { - "function": "readBody", - "source": "node_modules/.pnpm/h3@2.0.8/node_modules/h3/dist/h3.mjs", - "line": 220, - "percent": 3.8366724956282785 - }, - { - "function": "(anonymous)", - "source": "packages/erest-h3/dist/index.js", - "line": 49, - "percent": 3.133200099925056 - }, - { - "function": "json", - "source": "packages/erest-h3/dist/index.js", - "line": 113, - "percent": 2.508418685985511 - }, - { - "function": "splitPath", - "source": "node_modules/.pnpm/rou3@1.0.0/node_modules/rou3/dist/index.mjs", - "line": 44, - "percent": 1.9880589557831625 - }, - { - "function": "runMicrotasks", - "source": "", - "line": 0, - "percent": 1.782063452410692 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 1.6655008743442417 - }, - { - "function": "nextTick", - "source": "node:internal/process/task_queues", - "line": 113, - "percent": 1.3927054708968274 - }, - { - "function": "get _headers", - "source": "node_modules/.pnpm/srvx@1.0.8/node_modules/srvx/dist/adapters/node.mjs", - "line": 273, - "percent": 1.3426929802648015 - }, - { - "function": "processTicksAndRejections", - "source": "node:internal/process/task_queues", - "line": 72, - "percent": 1.2136397701723707 - }, - { - "function": "runChecks", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 33, - "percent": 1.2033474893829628 - }, - { - "function": "end", - "source": "node:_http_outgoing", - "line": 1173, - "percent": 1.0409193105171122 - }, - { - "function": "appendHeader", - "source": "node:internal/deps/undici/undici", - "line": 11213, - "percent": 1.034624031976018 - }, - { - "function": "parserOnIncoming", - "source": "node:_http_server", - "line": 1167, - "percent": 0.9847114664001998 - }, - { - "function": "toSortedArray", - "source": "node:internal/deps/undici/undici", - "line": 11388, - "percent": 0.9597302023482388 - }, - { - "function": "Readable.read", - "source": "node:internal/streams/readable", - "line": 657, - "percent": 0.959630277292031 - }, - { - "function": "(anonymous)", - "source": "", - "line": 1, - "percent": 0.8035973020234825 - }, - { - "function": "isValidHeaderValue", - "source": "node:internal/deps/undici/undici", - "line": 5559, - "percent": 0.7972520609542844 - }, - { - "function": "getLibuvNow", - "source": "", - "line": 0, - "percent": 0.7369972520609543 - }, - { - "function": "Readable.on", - "source": "node:internal/streams/readable", - "line": 1153, - "percent": 0.7369472895328504 - }, - { - "function": "checker", - "source": "packages/erest-h3/dist/index.js", - "line": 11, - "percent": 0.7368973270047464 - }, - { - "function": "next", - "source": "node:internal/deps/undici/undici", - "line": 5865, - "percent": 0.7286035473394954 - }, - { - "function": "_addListener", - "source": "node:events", - "line": 545, - "percent": 0.722408193854609 - } - ] - }, - { - "file": "h3-post-c50-native-r1.cpuprofile", - "sha256": "ca9b187834af32fab29e01acbe3d2a25dd54c3f55e51c002e5019b14d9849923", - "frames": [ - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 18.196762702331103 - }, - { - "function": "writev", - "source": "", - "line": 0, - "percent": 15.58032622961065 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 10.53884132241735 - }, - { - "function": "readBody", - "source": "node_modules/.pnpm/h3@2.0.8/node_modules/h3/dist/h3.mjs", - "line": 220, - "percent": 8.241234922817323 - }, - { - "function": "send", - "source": "benchmarks/server.mjs", - "line": 97, - "percent": 3.839410036872695 - }, - { - "function": "runMicrotasks", - "source": "", - "line": 0, - "percent": 3.347640772451722 - }, - { - "function": "splitPath", - "source": "node_modules/.pnpm/rou3@1.0.0/node_modules/rou3/dist/index.mjs", - "line": 44, - "percent": 1.9456783951003063 - }, - { - "function": "Readable.read", - "source": "node:internal/streams/readable", - "line": 657, - "percent": 1.4958065120929942 - }, - { - "function": "nextTick", - "source": "node:internal/process/task_queues", - "line": 113, - "percent": 1.4957065183426035 - }, - { - "function": "output", - "source": "benchmarks/fixture.mjs", - "line": 22, - "percent": 1.489456908943191 - }, - { - "function": "processTicksAndRejections", - "source": "node:internal/process/task_queues", - "line": 72, - "percent": 1.3791638022623585 - }, - { - "function": "onEnd", - "source": "node_modules/.pnpm/srvx@1.0.8/node_modules/srvx/dist/adapters/node.mjs", - "line": 580, - "percent": 1.2290231860508718 - }, - { - "function": "(anonymous)", - "source": "benchmarks/server.mjs", - "line": 107, - "percent": 1.1290794325354665 - }, - { - "function": "writevGeneric", - "source": "node:internal/stream_base_commons", - "line": 72, - "percent": 0.9374414099118804 - }, - { - "function": "utf8Slice", - "source": "", - "line": 0, - "percent": 0.9270920567464533 - }, - { - "function": "_addHeaderLine", - "source": "node:_http_incoming", - "line": 453, - "percent": 0.8852946690831822 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 0.8561464908443223 - }, - { - "function": "parserOnIncoming", - "source": "node:_http_server", - "line": 1167, - "percent": 0.8331979251296794 - }, - { - "function": "Readable.on", - "source": "node:internal/streams/readable", - "line": 1153, - "percent": 0.7541528654459095 - }, - { - "function": "parserOnHeadersComplete", - "source": "node:_http_common", - "line": 77, - "percent": 0.7374039122554841 - }, - { - "function": "resOnFinish", - "source": "node:_http_server", - "line": 1096, - "percent": 0.735404037247672 - }, - { - "function": "(anonymous)", - "source": "", - "line": 0, - "percent": 0.6624085994625336 - }, - { - "function": "onParserExecute", - "source": "node:_http_server", - "line": 963, - "percent": 0.6250109368164489 - }, - { - "function": "fromList", - "source": "node:internal/streams/readable", - "line": 1648, - "percent": 0.6082619836260234 - }, - { - "function": "end", - "source": "node:_http_outgoing", - "line": 1173, - "percent": 0.5979126304605963 - } - ] - }, - { - "file": "h3-post-c50-native-zod-r1.cpuprofile", - "sha256": "a7977d5a8fb035c5dba1b491c63441c6d212200c22327b84d2dc8fdad6b93244", - "frames": [ - { - "function": "writev", - "source": "", - "line": 0, - "percent": 21.614899256866625 - }, - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 14.239449200558038 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 12.198644095246236 - }, - { - "function": "readBody", - "source": "node_modules/.pnpm/h3@2.0.8/node_modules/h3/dist/h3.mjs", - "line": 220, - "percent": 6.699896980030322 - }, - { - "function": "send", - "source": "benchmarks/server.mjs", - "line": 97, - "percent": 2.33896819077239 - }, - { - "function": "runChecks", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 33, - "percent": 1.999467155324223 - }, - { - "function": "runMicrotasks", - "source": "", - "line": 0, - "percent": 1.6557673438192766 - }, - { - "function": "nextTick", - "source": "node:internal/process/task_queues", - "line": 113, - "percent": 1.6306746583370946 - }, - { - "function": "splitPath", - "source": "node_modules/.pnpm/rou3@1.0.0/node_modules/rou3/dist/index.mjs", - "line": 44, - "percent": 1.5849879760049943 - }, - { - "function": "Readable.read", - "source": "node:internal/streams/readable", - "line": 657, - "percent": 1.3412090375655497 - }, - { - "function": "(anonymous)", - "source": "benchmarks/server.mjs", - "line": 107, - "percent": 1.2830259979216059 - }, - { - "function": "processTicksAndRejections", - "source": "node:internal/process/task_queues", - "line": 72, - "percent": 1.276627862977942 - }, - { - "function": "utf8Slice", - "source": "", - "line": 0, - "percent": 1.126721560665066 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 1.0663891475634852 - }, - { - "function": "(anonymous)", - "source": "", - "line": 1, - "percent": 1.0476446115957199 - }, - { - "function": "parserOnIncoming", - "source": "node:_http_server", - "line": 1167, - "percent": 0.9330280223314903 - }, - { - "function": "writevGeneric", - "source": "node:internal/stream_base_commons", - "line": 72, - "percent": 0.8268589706100671 - }, - { - "function": "inst._zod.run", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 92, - "percent": 0.8205608065248979 - }, - { - "function": "write_", - "source": "node:_http_outgoing", - "line": 959, - "percent": 0.7497814387106159 - }, - { - "function": "_addHeaderLine", - "source": "node:_http_incoming", - "line": 453, - "percent": 0.7143417693742274 - }, - { - "function": "resOnFinish", - "source": "node:_http_server", - "line": 1096, - "percent": 0.676902682867944 - }, - { - "function": "inst._zod.parse", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 490, - "percent": 0.676902682867944 - }, - { - "function": "Readable.on", - "source": "node:internal/streams/readable", - "line": 1153, - "percent": 0.6581081614709312 - }, - { - "function": "set", - "source": "node:internal/deps/undici/undici", - "line": 11521, - "percent": 0.6061233150536619 - }, - { - "function": "emit", - "source": "node:events", - "line": 489, - "percent": 0.59987513639774 - } - ] - }, - { - "file": "leizmweb-post-c50-erest-r1.cpuprofile", - "sha256": "c900fc6dd6595f531a2ab0685dba1de2f60e04fcde701ff6cbd0e1a237fa639e", - "frames": [ - { - "function": "writeUtf8String", - "source": "", - "line": 0, - "percent": 24.76300231235548 - }, - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 7.589125679645021 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 6.235060308730704 - }, - { - "function": "json", - "source": "node_modules/.pnpm/@leizm+web@2.7.3_@types+express@5.0.6_supports-color@7.2.0/node_modules/@leizm/web/dist/lib/response.js", - "line": 183, - "percent": 4.028998187613274 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/body-parser@1.20.3_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", - "line": 74, - "percent": 3.5956252734204117 - }, - { - "function": "parse", - "source": "", - "line": 0, - "percent": 3.33319167552028 - }, - { - "function": "_storeHeader", - "source": "node:_http_outgoing", - "line": 456, - "percent": 2.0623211049309416 - }, - { - "function": "parseQueryStringValues", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", - "line": 60, - "percent": 2.029073182926067 - }, - { - "function": "module.exports", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", - "line": 304, - "percent": 1.781138678832573 - }, - { - "function": "runChecks", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 33, - "percent": 1.5498531341791137 - }, - { - "function": "checker", - "source": "packages/erest-leizmweb/dist/index.js", - "line": 18, - "percent": 1.3791638022623585 - }, - { - "function": "(anonymous)", - "source": "", - "line": 1, - "percent": 1.2499718767577026 - }, - { - "function": "decode", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/utils.js", - "line": 114, - "percent": 1.1624273482907317 - }, - { - "function": "parseUrl", - "source": "node_modules/.pnpm/@leizm+web@2.7.3_@types+express@5.0.6_supports-color@7.2.0/node_modules/@leizm/web/dist/lib/parse_url.js", - "line": 10, - "percent": 1.102031123054809 - }, - { - "function": "mimeMatch", - "source": "node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js", - "line": 195, - "percent": 1.0978313855384039 - }, - { - "function": "inst._zod.run", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 92, - "percent": 1.0790825573401661 - }, - { - "function": "processTicksAndRejections", - "source": "node:internal/process/task_queues", - "line": 72, - "percent": 0.9937378913817886 - }, - { - "function": "_addListener", - "source": "node:events", - "line": 545, - "percent": 0.968839447534529 - }, - { - "function": "decode", - "source": "", - "line": 0, - "percent": 0.9353915380288732 - }, - { - "function": "(anonymous)", - "source": "", - "line": 0, - "percent": 0.9227923254796575 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 0.8561464908443223 - }, - { - "function": "setHeader", - "source": "node:_http_outgoing", - "line": 700, - "percent": 0.8166489594400349 - }, - { - "function": "_addHeaderLine", - "source": "node:_http_incoming", - "line": 453, - "percent": 0.8103493531654271 - }, - { - "function": "writeHead", - "source": "node:_http_server", - "line": 408, - "percent": 0.7749015686519592 - }, - { - "function": "nextTick", - "source": "node:internal/process/task_queues", - "line": 113, - "percent": 0.7644522217361416 - } - ] - }, - { - "file": "leizmweb-post-c50-native-r1.cpuprofile", - "sha256": "a4726aec78827a10bcea2d9b104bd7bdfb4fa96e5d12da22eb8509cfca9f695e", - "frames": [ - { - "function": "writeUtf8String", - "source": "", - "line": 0, - "percent": 18.533328401642255 - }, - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 12.802136888416157 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 8.82836015606803 - }, - { - "function": "parseQueryStringValues", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", - "line": 60, - "percent": 6.985023987012324 - }, - { - "function": "module.exports", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", - "line": 304, - "percent": 4.077692128521202 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/body-parser@1.20.3_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", - "line": 74, - "percent": 3.5675620018533825 - }, - { - "function": "decode", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/utils.js", - "line": 114, - "percent": 2.040820406804534 - }, - { - "function": "json", - "source": "node_modules/.pnpm/@leizm+web@2.7.3_@types+express@5.0.6_supports-color@7.2.0/node_modules/@leizm/web/dist/lib/response.js", - "line": 183, - "percent": 1.9430029800076576 - }, - { - "function": "parse", - "source": "", - "line": 0, - "percent": 1.5745256829475787 - }, - { - "function": "mimeMatch", - "source": "node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js", - "line": 195, - "percent": 1.5535826569752271 - }, - { - "function": "nextTick", - "source": "node:internal/process/task_queues", - "line": 113, - "percent": 1.5057985690764977 - }, - { - "function": "processTicksAndRejections", - "source": "node:internal/process/task_queues", - "line": 72, - "percent": 1.505748585720955 - }, - { - "function": "_addListener", - "source": "node:events", - "line": 545, - "percent": 1.120476881198561 - }, - { - "function": "decode", - "source": "", - "line": 0, - "percent": 1.0579477034147629 - }, - { - "function": "setHeader", - "source": "node:_http_outgoing", - "line": 700, - "percent": 1.0538490682602693 - }, - { - "function": "_storeHeader", - "source": "node:_http_outgoing", - "line": 456, - "percent": 1.0288074071334246 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 0.9830226534563989 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/media-typer@0.3.0/node_modules/media-typer/index.js", - "line": 139, - "percent": 0.835221871116918 - }, - { - "function": "readStream", - "source": "node_modules/.pnpm/raw-body@2.5.2/node_modules/raw-body/index.js", - "line": 155, - "percent": 0.8247253664529712 - }, - { - "function": "resOnFinish", - "source": "node:_http_server", - "line": 1096, - "percent": 0.7830892312859817 - }, - { - "function": "parserOnIncoming", - "source": "node:_http_server", - "line": 1167, - "percent": 0.6497836220538561 - }, - { - "function": "output", - "source": "benchmarks/fixture.mjs", - "line": 22, - "percent": 0.6059982025985347 - }, - { - "function": "Readable.on", - "source": "node:internal/streams/readable", - "line": 1153, - "percent": 0.597750948934005 - }, - { - "function": "addListener", - "source": "node:events", - "line": 615, - "percent": 0.5810565081827751 - }, - { - "function": "parserOnHeadersComplete", - "source": "node:_http_common", - "line": 77, - "percent": 0.576907889672739 - } - ] - }, - { - "file": "leizmweb-post-c50-native-zod-r1.cpuprofile", - "sha256": "70b1f6fdfe3ccd1a898d994aa819e35d71c62abc91c528f497f4c5030fe384a8", - "frames": [ - { - "function": "writeUtf8String", - "source": "", - "line": 0, - "percent": 25.685896314803248 - }, - { - "function": "(idle)", - "source": "", - "line": 0, - "percent": 8.88369768894441 - }, - { - "function": "(program)", - "source": "", - "line": 0, - "percent": 7.047545284197376 - }, - { - "function": "parseQueryStringValues", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", - "line": 60, - "percent": 6.215015615240475 - }, - { - "function": "module.exports", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/parse.js", - "line": 304, - "percent": 3.895565271705184 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/body-parser@1.20.3_supports-color@7.2.0/node_modules/body-parser/lib/types/json.js", - "line": 74, - "percent": 3.0127170518425985 - }, - { - "function": "json", - "source": "node_modules/.pnpm/@leizm+web@2.7.3_@types+express@5.0.6_supports-color@7.2.0/node_modules/@leizm/web/dist/lib/response.js", - "line": 183, - "percent": 2.3361898813241724 - }, - { - "function": "decode", - "source": "node_modules/.pnpm/qs@6.14.0/node_modules/qs/lib/utils.js", - "line": 114, - "percent": 1.6594128669581512 - }, - { - "function": "(garbage collector)", - "source": "", - "line": 0, - "percent": 1.3949281698938163 - }, - { - "function": "nextTick", - "source": "node:internal/process/task_queues", - "line": 113, - "percent": 1.257464084946908 - }, - { - "function": "parse", - "source": "", - "line": 0, - "percent": 1.2409743910056215 - }, - { - "function": "_storeHeader", - "source": "node:_http_outgoing", - "line": 456, - "percent": 1.0410493441599 - }, - { - "function": "runChecks", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 33, - "percent": 1.005571517801374 - }, - { - "function": "decode", - "source": "", - "line": 0, - "percent": 0.982735790131168 - }, - { - "function": "validate", - "source": "benchmarks/fixture.mjs", - "line": 28, - "percent": 0.9306183635227983 - }, - { - "function": "readStream", - "source": "node_modules/.pnpm/raw-body@2.5.2/node_modules/raw-body/index.js", - "line": 155, - "percent": 0.8994378513429108 - }, - { - "function": "inst._zod.run", - "source": "node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js", - "line": 92, - "percent": 0.8411742660836977 - }, - { - "function": "mimeMatch", - "source": "node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js", - "line": 195, - "percent": 0.8077951280449719 - }, - { - "function": "doWrite", - "source": "node:internal/streams/writable", - "line": 589, - "percent": 0.7682698313554029 - }, - { - "function": "writeHead", - "source": "node:_http_server", - "line": 408, - "percent": 0.7369893816364772 - }, - { - "function": "removeListener", - "source": "node:events", - "line": 680, - "percent": 0.7286445971267957 - }, - { - "function": "setHeader", - "source": "node:_http_outgoing", - "line": 700, - "percent": 0.7266958151155528 - }, - { - "function": "(anonymous)", - "source": "", - "line": 1, - "percent": 0.7058588382261086 - }, - { - "function": "Readable.read", - "source": "node:internal/streams/readable", - "line": 657, - "percent": 0.6766770768269832 - }, - { - "function": "parse", - "source": "node_modules/.pnpm/media-typer@0.3.0/node_modules/media-typer/index.js", - "line": 139, - "percent": 0.6682823235477826 - } - ] - } - ] - }, - "headerChecks": { - "cases": [ - { - "variant": "erest", - "result": { - "headers": { - "__proto__": "special", - "cookie": "a=1; b=2", - "set-cookie": "a=1, b=2", - "x-app": "updated-before-dispatch", - "x-duplicate": "a, b" - }, - "keys": [ - "__proto__", - "cookie", - "set-cookie", - "x-app", - "x-duplicate" - ], - "sameObject": true, - "prototype": true - } - }, - { - "variant": "control", - "matchesBaseline": true, - "result": { - "headers": { - "__proto__": "special", - "cookie": "a=1; b=2", - "set-cookie": "a=1, b=2", - "x-app": "updated-before-dispatch", - "x-duplicate": "a, b" - }, - "keys": [ - "__proto__", - "cookie", - "set-cookie", - "x-app", - "x-duplicate" - ], - "sameObject": true, - "prototype": true - } - }, - { - "variant": "foreach", - "matchesBaseline": true, - "result": { - "headers": { - "__proto__": "special", - "cookie": "a=1; b=2", - "set-cookie": "a=1, b=2", - "x-app": "updated-before-dispatch", - "x-duplicate": "a, b" - }, - "keys": [ - "__proto__", - "cookie", - "set-cookie", - "x-app", - "x-duplicate" - ], - "sameObject": true, - "prototype": true - } - }, - { - "variant": "node-headers", - "expectedIncompatibility": "Misses mutation to Web Headers before dispatch", - "result": { - "headers": { - "x-duplicate": "a, b", - "set-cookie": [ - "a=1, b=2" - ], - "cookie": "a=1; b=2" - }, - "keys": [ - "x-duplicate", - "set-cookie", - "cookie" - ], - "sameObject": true, - "prototype": true - } - } - ] - }, - "findings": { - "scope": "Apple M2, Node.js 24.22.1, POST with params/query/nested body, concurrency 50. 60 + 39 screening samples and 35 H3 confirmation samples; 9 profiling processes excluded from gain comparisons.", - "productionRuntimeChanged": false, - "items": [ - "共完成 134 次非 profiler 性能采样,计时区间 HTTP/网络错误均为 0。初筛为 3 轮、预热 2s/测量 3s;H3 复核为 7 轮、预热 3s/测量 5s。所有收益均按同框架、场景、并发和轮次配对,不直接比较不同阶段的绝对吞吐。", - "最值得继续调查的是 H3 headers 转换。Node 原始 headers 复制的 7 轮吞吐配对中位变化为 +7.12%(+5.26% ~ +7.58%),CPU 约减少 1.624 μs/请求;相对未改动副本为 +6.98%。但 P95 增加约 0.584ms,且真实 HTTP 检查证明它会漏掉路由前对 Web Headers 的修改,因此不能直接替换现有实现。重复头/数组规范化和跨运行时行为也需保留。", - "保持 Web Headers 路径的 forEach 复制通过了特殊 __proto__ 字段、重复头、快照时机、相同对象及普通对象原型检查。7 轮相对现有 erest 的配对中位变化为 +0.93%;相对隔离副本为 +0.85%,范围 -1.29% ~ +1.22%。未改动副本本身也有 -0.33% ~ +2.54% 波动,目前不足以确认稳定收益。", - "通用微调没有明显赢家:预绑定校验器的吞吐配对中位变化在 -0.40% ~ +0.36%;Object.assign 参数合并在 -0.34% ~ +0.66%;同步 handler 包装在 -0.18% ~ +0.61%。这些范围是不同框架的中位值,非置信区间,初筛只有 3 轮。", - "共享 Reply 原型方法没有可靠收益,各框架配对中位变化为 -0.68% ~ +0.24%,也未明显降低 RSS 或存活堆。该写法还改变方法枚举和脱离对象调用时的行为,不值得为当前收益承担兼容性变化。Express 第二阶段有一次对照吞吐明显上升;保留该样本,不用单轮结果归因。", - "排除 getter 式延迟 headers 的当前实现:H3 吞吐约 -1.26%,CPU 增加约 5.895 μs/请求,RSS 配对中位增量约 157 MiB。此结果反对该具体实现,不能推出所有惰性或基于类的上下文设计都更慢。", - "Express 的短测 RSS 仍高于原生加 Zod,GC 后堆差距约 1.6~1.7 MiB。不同采样时长的 RSS 不能直接作泄漏或分配速率结论。若要降低峰值内存,下一步应采集分配/GC 时间序列并延长运行,不应基于单次 RSS 引入跨请求 Context/Reply 池。", - "本轮只新增隔离实验、兼容性检查、报告工具和数据,没有修改公开运行时代码。建议暂不合并这些诊断变体到运行时;优先研究保持 Web Headers 修改可见性及规范化行为的 H3 headers 快照构建,再独立复测。发压客户端在部分 H3 组接近一个逻辑核,吞吐不能视为服务端容量上限。" - ], - "inputSha256": [ - "a9f063f6665ce3e5880972abc442c1a39f08bc257bdd755a6f5ace1ecc3b0a66", - "fdcc457030fdef4352a65635dbb4291f021d30eb7afd1953d607181c90a2065b", - "bbdeb401b9368617b41a5988dada387df059ceec75af7b17bc0b3eacb89dce66" - ] - }, - "stages": [ - { - "input": "benchmarks/results/experiments/screen.json", - "raw": { - "startedAt": "2026-10-27T16:12:26.526Z", - "commit": "0d555732d1f5cac95f54a2281c4bcbd1121e0e24", - "harnessSha256": { - "fixture.mjs": "064fd8eb68b46d1b567bbea84b7655948def3687c5f9e68438c1bfdc511259e1", - "load.mjs": "ce51b4f707385179b4c69bfda7babe2534083005280e9819ddd207f97dafda5a", - "server.mjs": "d3d963157c8aeed9b1662a8bb4c33a49c6e1c555375b45981e80a43a9d18e72e", - "run.mjs": "0330171024592b77ca41a4779cefa8fd68ffa71478d284d380d70ebc4af4b3e4" - }, - "environment": { - "node": "v24.22.1", - "os": "Darwin 27.2.0 arm64", - "platform": "darwin", - "cpu": "Apple M2", - "logicalCpus": 8, - "availableParallelism": 8, - "systemMemoryBytes": 17179869184, - "cpuMax": null, - "memoryMax": null, - "versions": { - "erest": "3.4.0", - "packages/erest-express/": "3.4.0", - "packages/erest-koa/": "3.4.0", - "packages/erest-leizmweb/": "3.4.0", - "node_modules/express/": "5.2.1", - "node_modules/koa/": "3.0.0", - "node_modules/koa-router/": "13.1.1", - "node_modules/koa-bodyparser/": "4.4.1", - "node_modules/@leizm/web/": "2.7.3", - "node_modules/zod/": "4.4.3", - "packages/erest-h3/": "3.4.0", - "node_modules/h3/": "2.0.8" - } - }, - "config": { - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "scenarios": [ - "post" - ], - "concurrency": [ - 50 - ], - "rounds": 3, - "durationMs": 3000, - "warmupMs": 2000, - "serverCpu": null - }, - "experiments": { - "commit": "0d555732d1f5cac95f54a2281c4bcbd1121e0e24", - "prepareSha256": "2c46045c9efe1162abfb97dc794cb9f5d36e3aff113df81baca02d37540f8f5c", - "baseline": { - "dist/lib/api.js": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "dist/lib/adapters/utils.js": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "dist/lib/params.js": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "packages/erest-express/dist/index.js": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "packages/erest-koa/dist/index.js": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "packages/erest-leizmweb/dist/index.js": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "packages/erest-h3/dist/index.js": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0" - }, - "variants": { - "hoist": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/hoist", - "frameworks": [ - "express", - "koa", - "leizmweb" - ], - "patches": [ - "hoist" - ], - "descriptions": [ - "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly." - ], - "caveats": [ - "Must retain existing hook binding semantics and all layered/requiredOneOf behavior." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "5e738ee1b62fee37841aa7a176fba29d64ec8bcf84ae7b875c153470177626d3" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "15cc07b414ac5d4393170ce4cc5fd3ce8adfee1abdb6e417b579dc105c0a9bee" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "a6b044ae94621d9d237613bcaf89c0ba3ab5e0289aa6ef695887c6168a8082f9" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" - } - } - }, - "assign": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/assign", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [ - "assign" - ], - "descriptions": [ - "Replace four object spreads for flat params with Object.assign." - ], - "caveats": [ - "Diagnostic only: Object.assign treats an own __proto__ key differently; not safe to ship unchanged." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "f3537bce8dfaf13e39757a1a43428466f8d4a50fc3cd83ab2e85c3ba29f7cf86" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "f42d3219cd2f04c72167bddb5c96a9e442860d4bbca0173d465386dc293dca48" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "72e2f5ae67dc2f7afb42032c8628ca9e61eea2f9e8ff21a2296ffe18a2a8ce58" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "f2a0e652e0405aaa9b1e23d2715b39c07d638b2853971c69aa7c1ab1c4d86780" - } - } - }, - "sync": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/sync", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [ - "sync" - ], - "descriptions": [ - "Avoid unconditional async typed-handler wrapper; resolve async results via a shared finish callback." - ], - "caveats": [ - "Check rejection, response schemas, envelope return bookkeeping and async onion middleware before shipping." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "d5aebe36f501e7b13f787340b16746bc335ec5106d1caa7bfde605a483ef7bd0" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" - } - } - }, - "headers": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/headers", - "frameworks": [ - "h3" - ], - "patches": [ - "headers" - ], - "descriptions": [ - "Lazily materialize H3 ctx.headers on first access, cache the object and keep a setter." - ], - "caveats": [ - "Header snapshot timing/property descriptors differ; reject as a drop-in optimization without an API decision." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "00e65ed2af97fe50a1937ca1ef49645a9911b57839bfe9ed400468d2655d8b78" - } - } - } - } - }, - "selectedVariants": [ - "hoist", - "assign", - "sync", - "headers" - ], - "samples": [ - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 98951, - "errors": 0, - "elapsedMs": 3001.418792, - "rps": 32968.07505295316, - "latencyMs": { - "mean": 1.5159658204970146, - "p50": 1.455, - "p95": 1.83, - "p99": 2.939, - "max": 7.740790999999717 - }, - "clientCpuPercent": 87.63278909996242, - "serverCpuPercent": 106.68659007494097, - "serverCpuUsPerRequest": 32.36742428070459, - "serverRssMiB": 120.96875, - "serverRetainedHeapMiB": 13.987625122070312, - "idleRssMiB": 82.234375, - "server": { - "type": "stats", - "elapsedMs": 3002.0539579999995, - "cpu": { - "user": 2656933, - "system": 545856 - }, - "memory": { - "rss": 126844928, - "heapTotal": 38371328, - "heapUsed": 19262656, - "external": 4335057, - "arrayBuffers": 444802 - }, - "retainedMemory": { - "rss": 126926848, - "heapTotal": 34439168, - "heapUsed": 14667088, - "external": 4335057, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123952 - }, - "idleMemory": { - "rss": 86228992, - "heapTotal": 31555584, - "heapUsed": 12373912, - "external": 4167902, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 94475, - "errors": 0, - "elapsedMs": 3001.5807919999997, - "rps": 31475.0814809985, - "latencyMs": { - "mean": 1.5878460157607752, - "p50": 1.524, - "p95": 1.904, - "p99": 3.052, - "max": 6.302416999999878 - }, - "clientCpuPercent": 80.55395365149978, - "serverCpuPercent": 106.41310680906507, - "serverCpuUsPerRequest": 33.82337126223869, - "serverRssMiB": 165.90625, - "serverRetainedHeapMiB": 15.674789428710938, - "idleRssMiB": 85.96875, - "server": { - "type": "stats", - "elapsedMs": 3002.8847909999995, - "cpu": { - "user": 2648445, - "system": 547018 - }, - "memory": { - "rss": 173965312, - "heapTotal": 92110848, - "heapUsed": 46464448, - "external": 4583402, - "arrayBuffers": 615211 - }, - "retainedMemory": { - "rss": 173998080, - "heapTotal": 90013696, - "heapUsed": 16436208, - "external": 4583402, - "arrayBuffers": 277690 - }, - "maxRssKiB": 169920 - }, - "idleMemory": { - "rss": 90144768, - "heapTotal": 33390592, - "heapUsed": 14022624, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 1, - "requests": 93650, - "errors": 0, - "elapsedMs": 3001.5298330000005, - "rps": 31200.7560179396, - "latencyMs": { - "mean": 1.6017736851681799, - "p50": 1.541, - "p95": 1.925, - "p99": 3.088, - "max": 7.566000000000713 - }, - "clientCpuPercent": 78.99951464517059, - "serverCpuPercent": 106.46222713360578, - "serverCpuUsPerRequest": 34.13068873465029, - "serverRssMiB": 166.359375, - "serverRetainedHeapMiB": 15.676551818847656, - "idleRssMiB": 85.546875, - "server": { - "type": "stats", - "elapsedMs": 3002.322125, - "cpu": { - "user": 2642923, - "system": 553416 - }, - "memory": { - "rss": 174440448, - "heapTotal": 92635136, - "heapUsed": 26190872, - "external": 4383574, - "arrayBuffers": 417755 - }, - "retainedMemory": { - "rss": 174456832, - "heapTotal": 89751552, - "heapUsed": 16438056, - "external": 4383574, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170368 - }, - "idleMemory": { - "rss": 89702400, - "heapTotal": 33390592, - "heapUsed": 14022960, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 1, - "requests": 93710, - "errors": 0, - "elapsedMs": 3001.5089579999985, - "rps": 31220.96295939159, - "latencyMs": { - "mean": 1.6007059141287059, - "p50": 1.543, - "p95": 1.898, - "p99": 3.089, - "max": 12.127709000000323 - }, - "clientCpuPercent": 79.11990379606927, - "serverCpuPercent": 106.47727080325231, - "serverCpuUsPerRequest": 34.11334969587024, - "serverRssMiB": 166.625, - "serverRetainedHeapMiB": 15.695716857910156, - "idleRssMiB": 86.046875, - "server": { - "type": "stats", - "elapsedMs": 3002.2952090000003, - "cpu": { - "user": 2646350, - "system": 550412 - }, - "memory": { - "rss": 174718976, - "heapTotal": 92635136, - "heapUsed": 28439600, - "external": 4332726, - "arrayBuffers": 366907 - }, - "retainedMemory": { - "rss": 174751744, - "heapTotal": 90537984, - "heapUsed": 16458152, - "external": 4332726, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170656 - }, - "idleMemory": { - "rss": 90226688, - "heapTotal": 33128448, - "heapUsed": 14022600, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 1, - "requests": 95470, - "errors": 0, - "elapsedMs": 3001.548541, - "rps": 31806.915229228005, - "latencyMs": { - "mean": 1.5712305976118242, - "p50": 1.513, - "p95": 1.907, - "p99": 3.031, - "max": 6.244292000003043 - }, - "clientCpuPercent": 80.0792646584755, - "serverCpuPercent": 106.52046876277775, - "serverCpuUsPerRequest": 33.49920393840997, - "serverRssMiB": 166.890625, - "serverRetainedHeapMiB": 15.663154602050781, - "idleRssMiB": 86.09375, - "server": { - "type": "stats", - "elapsedMs": 3002.398541, - "cpu": { - "user": 2649350, - "system": 548819 - }, - "memory": { - "rss": 174997504, - "heapTotal": 92635136, - "heapUsed": 32563584, - "external": 4424238, - "arrayBuffers": 458419 - }, - "retainedMemory": { - "rss": 174997504, - "heapTotal": 90275840, - "heapUsed": 16424008, - "external": 4424238, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170896 - }, - "idleMemory": { - "rss": 90275840, - "heapTotal": 33128448, - "heapUsed": 14023216, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 122374, - "errors": 0, - "elapsedMs": 3001.0786249999983, - "rps": 40776.67242057015, - "latencyMs": { - "mean": 1.2256893643012379, - "p50": 1.176, - "p95": 1.48, - "p99": 2.378, - "max": 6.170083000000886 - }, - "clientCpuPercent": 94.88615114174164, - "serverCpuPercent": 107.7521926681871, - "serverCpuUsPerRequest": 26.430205762662002, - "serverRssMiB": 114.953125, - "serverRetainedHeapMiB": 14.046493530273438, - "idleRssMiB": 81.796875, - "server": { - "type": "stats", - "elapsedMs": 3001.674416, - "cpu": { - "user": 2596369, - "system": 638001 - }, - "memory": { - "rss": 120537088, - "heapTotal": 34177024, - "heapUsed": 21288768, - "external": 4218977, - "arrayBuffers": 311707 - }, - "retainedMemory": { - "rss": 120537088, - "heapTotal": 34177024, - "heapUsed": 14728816, - "external": 4218977, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117712 - }, - "idleMemory": { - "rss": 85770240, - "heapTotal": 31817728, - "heapUsed": 12366200, - "external": 4184917, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 120258, - "errors": 0, - "elapsedMs": 3001.200499999999, - "rps": 40069.96533553824, - "latencyMs": { - "mean": 1.247240621962748, - "p50": 1.193, - "p95": 1.568, - "p99": 2.424, - "max": 5.206540999999561 - }, - "clientCpuPercent": 93.88776258034079, - "serverCpuPercent": 107.80773173472147, - "serverCpuUsPerRequest": 26.91176470588235, - "serverRssMiB": 118.8125, - "serverRetainedHeapMiB": 15.533004760742188, - "idleRssMiB": 86.78125, - "server": { - "type": "stats", - "elapsedMs": 3001.969291, - "cpu": { - "user": 2610218, - "system": 626137 - }, - "memory": { - "rss": 124583936, - "heapTotal": 36012032, - "heapUsed": 17656856, - "external": 4245898, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 124600320, - "heapTotal": 36012032, - "heapUsed": 16287536, - "external": 4245898, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121680 - }, - "idleMemory": { - "rss": 90996736, - "heapTotal": 32866304, - "heapUsed": 13959888, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 1, - "requests": 121340, - "errors": 0, - "elapsedMs": 3001.2284999999974, - "rps": 40430.11053640205, - "latencyMs": { - "mean": 1.2361505513845408, - "p50": 1.183, - "p95": 1.429, - "p99": 2.386, - "max": 5.284291000003577 - }, - "clientCpuPercent": 94.94185464385676, - "serverCpuPercent": 107.99468702803475, - "serverCpuUsPerRequest": 26.718246250206032, - "serverRssMiB": 118.390625, - "serverRetainedHeapMiB": 15.5762939453125, - "idleRssMiB": 86.703125, - "server": { - "type": "stats", - "elapsedMs": 3001.992125, - "cpu": { - "user": 2603667, - "system": 638325 - }, - "memory": { - "rss": 124141568, - "heapTotal": 35749888, - "heapUsed": 23468264, - "external": 4277390, - "arrayBuffers": 311571 - }, - "retainedMemory": { - "rss": 124174336, - "heapTotal": 35749888, - "heapUsed": 16332928, - "external": 4277390, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121264 - }, - "idleMemory": { - "rss": 90914816, - "heapTotal": 33128448, - "heapUsed": 13965128, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 1, - "requests": 121044, - "errors": 0, - "elapsedMs": 3001.102291999996, - "rps": 40333.18035265429, - "latencyMs": { - "mean": 1.239196918385037, - "p50": 1.187, - "p95": 1.442, - "p99": 2.39, - "max": 5.257125000003725 - }, - "clientCpuPercent": 94.35926284647961, - "serverCpuPercent": 107.48551611019643, - "serverCpuUsPerRequest": 26.6550675787317, - "serverRssMiB": 118.421875, - "serverRetainedHeapMiB": 15.589828491210938, - "idleRssMiB": 86.578125, - "server": { - "type": "stats", - "elapsedMs": 3001.74025, - "cpu": { - "user": 2594424, - "system": 632012 - }, - "memory": { - "rss": 124174336, - "heapTotal": 35749888, - "heapUsed": 21291488, - "external": 4264878, - "arrayBuffers": 299059 - }, - "retainedMemory": { - "rss": 124190720, - "heapTotal": 35749888, - "heapUsed": 16347120, - "external": 4264878, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121280 - }, - "idleMemory": { - "rss": 90783744, - "heapTotal": 33128448, - "heapUsed": 13963200, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 1, - "requests": 121025, - "errors": 0, - "elapsedMs": 3001.2135000000053, - "rps": 40325.35506054461, - "latencyMs": { - "mean": 1.239323725370821, - "p50": 1.184, - "p95": 1.465, - "p99": 2.395, - "max": 6.799708999998984 - }, - "clientCpuPercent": 94.2434451930859, - "serverCpuPercent": 107.42198001351666, - "serverCpuUsPerRequest": 26.645255112580045, - "serverRssMiB": 118.765625, - "serverRetainedHeapMiB": 15.555671691894531, - "idleRssMiB": 86.71875, - "server": { - "type": "stats", - "elapsedMs": 3001.938709, - "cpu": { - "user": 2592091, - "system": 632651 - }, - "memory": { - "rss": 124534784, - "heapTotal": 36274176, - "heapUsed": 20270600, - "external": 4258758, - "arrayBuffers": 292939 - }, - "retainedMemory": { - "rss": 124649472, - "heapTotal": 36012032, - "heapUsed": 16311304, - "external": 4258758, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121728 - }, - "idleMemory": { - "rss": 90931200, - "heapTotal": 33128448, - "heapUsed": 13964768, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 120496, - "errors": 0, - "elapsedMs": 3001.2097090000025, - "rps": 40149.14373982518, - "latencyMs": { - "mean": 1.2447735130128763, - "p50": 1.183, - "p95": 1.522, - "p99": 2.415, - "max": 8.076208999998926 - }, - "clientCpuPercent": 94.22277262131827, - "serverCpuPercent": 106.23338271777666, - "serverCpuUsPerRequest": 26.466281038374717, - "serverRssMiB": 121.03125, - "serverRetainedHeapMiB": 15.594345092773438, - "idleRssMiB": 84.375, - "server": { - "type": "stats", - "elapsedMs": 3001.9574999999995, - "cpu": { - "user": 2549372, - "system": 639709 - }, - "memory": { - "rss": 126910464, - "heapTotal": 39436288, - "heapUsed": 23351248, - "external": 4224168, - "arrayBuffers": 293619 - }, - "retainedMemory": { - "rss": 126943232, - "heapTotal": 37863424, - "heapUsed": 16351856, - "external": 4224168, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123968 - }, - "idleMemory": { - "rss": 88473600, - "heapTotal": 33406976, - "heapUsed": 14168272, - "external": 4208196, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 110828, - "errors": 0, - "elapsedMs": 3001.442750000002, - "rps": 36924.90886257948, - "latencyMs": { - "mean": 1.3534895314270703, - "p50": 1.3, - "p95": 1.504, - "p99": 2.623, - "max": 7.3871670000007725 - }, - "clientCpuPercent": 89.60124260241173, - "serverCpuPercent": 107.35237745193737, - "serverCpuUsPerRequest": 29.07985346663298, - "serverRssMiB": 140.015625, - "serverRetainedHeapMiB": 17.196517944335938, - "idleRssMiB": 88.484375, - "server": { - "type": "stats", - "elapsedMs": 3002.1337919999996, - "cpu": { - "user": 2601906, - "system": 620956 - }, - "memory": { - "rss": 146817024, - "heapTotal": 58310656, - "heapUsed": 24532480, - "external": 4351968, - "arrayBuffers": 360498 - }, - "retainedMemory": { - "rss": 146817024, - "heapTotal": 58310656, - "heapUsed": 18031856, - "external": 4351968, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143376 - }, - "idleMemory": { - "rss": 92782592, - "heapTotal": 35241984, - "heapUsed": 15779832, - "external": 4334653, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 1, - "requests": 111092, - "errors": 0, - "elapsedMs": 3001.191500000001, - "rps": 37015.96515917094, - "latencyMs": { - "mean": 1.3502214563784745, - "p50": 1.294, - "p95": 1.53, - "p99": 2.612, - "max": 9.309207999998762 - }, - "clientCpuPercent": 89.4131547420416, - "serverCpuPercent": 107.61180583912439, - "serverCpuUsPerRequest": 29.077566341410723, - "serverRssMiB": 139.125, - "serverRetainedHeapMiB": 17.271484375, - "idleRssMiB": 88.25, - "server": { - "type": "stats", - "elapsedMs": 3001.79425, - "cpu": { - "user": 2609055, - "system": 621230 - }, - "memory": { - "rss": 145883136, - "heapTotal": 58310656, - "heapUsed": 25004256, - "external": 4354220, - "arrayBuffers": 365122 - }, - "retainedMemory": { - "rss": 145899520, - "heapTotal": 58048512, - "heapUsed": 18110464, - "external": 4354220, - "arrayBuffers": 343226 - }, - "maxRssKiB": 142480 - }, - "idleMemory": { - "rss": 92536832, - "heapTotal": 35241984, - "heapUsed": 15780416, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 1, - "requests": 110678, - "errors": 0, - "elapsedMs": 3001.3017919999984, - "rps": 36876.66475094687, - "latencyMs": { - "mean": 1.3552981911762207, - "p50": 1.297, - "p95": 1.543, - "p99": 2.62, - "max": 9.09179099999892 - }, - "clientCpuPercent": 89.2383100939421, - "serverCpuPercent": 107.02429103186678, - "serverCpuUsPerRequest": 29.02965358969262, - "serverRssMiB": 140.328125, - "serverRetainedHeapMiB": 17.20538330078125, - "idleRssMiB": 88.328125, - "server": { - "type": "stats", - "elapsedMs": 3002.0698750000006, - "cpu": { - "user": 2589836, - "system": 623108 - }, - "memory": { - "rss": 147144704, - "heapTotal": 58834944, - "heapUsed": 31588936, - "external": 4395972, - "arrayBuffers": 406874 - }, - "retainedMemory": { - "rss": 147144704, - "heapTotal": 58310656, - "heapUsed": 18041152, - "external": 4395972, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143696 - }, - "idleMemory": { - "rss": 92618752, - "heapTotal": 36028416, - "heapUsed": 15778792, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 1, - "requests": 111123, - "errors": 0, - "elapsedMs": 3001.346458, - "rps": 37024.38274122101, - "latencyMs": { - "mean": 1.3498529812010516, - "p50": 1.294, - "p95": 1.538, - "p99": 2.619, - "max": 6.480040999987978 - }, - "clientCpuPercent": 89.39451134834631, - "serverCpuPercent": 107.41158639773253, - "serverCpuUsPerRequest": 29.018250047244944, - "serverRssMiB": 139.484375, - "serverRetainedHeapMiB": 17.180198669433594, - "idleRssMiB": 88.28125, - "server": { - "type": "stats", - "elapsedMs": 3002.0923330000005, - "cpu": { - "user": 2602711, - "system": 621884 - }, - "memory": { - "rss": 146259968, - "heapTotal": 58048512, - "heapUsed": 33817336, - "external": 4411340, - "arrayBuffers": 422242 - }, - "retainedMemory": { - "rss": 146309120, - "heapTotal": 57786368, - "heapUsed": 18014744, - "external": 4411340, - "arrayBuffers": 353025 - }, - "maxRssKiB": 142880 - }, - "idleMemory": { - "rss": 92569600, - "heapTotal": 35241984, - "heapUsed": 15780040, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 139915, - "errors": 0, - "elapsedMs": 3000.9740420000016, - "rps": 46623.195683076796, - "latencyMs": { - "mean": 1.071972279112348, - "p50": 0.948, - "p95": 1.849, - "p99": 2.005, - "max": 6.7126659999921685 - }, - "clientCpuPercent": 100.21979390383538, - "serverCpuPercent": 106.36229709398476, - "serverCpuUsPerRequest": 22.81820390951649, - "serverRssMiB": 111.25, - "serverRetainedHeapMiB": 11.992713928222656, - "idleRssMiB": 74.875, - "server": { - "type": "stats", - "elapsedMs": 3001.6359999999995, - "cpu": { - "user": 2422083, - "system": 770526 - }, - "memory": { - "rss": 116654080, - "heapTotal": 31735808, - "heapUsed": 14020888, - "external": 4181569, - "arrayBuffers": 280803 - }, - "retainedMemory": { - "rss": 116670464, - "heapTotal": 31735808, - "heapUsed": 12575272, - "external": 4181569, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113936 - }, - "idleMemory": { - "rss": 78512128, - "heapTotal": 20463616, - "heapUsed": 10639072, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 127121, - "errors": 0, - "elapsedMs": 3001.249457999991, - "rps": 42356.025974832635, - "latencyMs": { - "mean": 1.1799551979373866, - "p50": 1.125, - "p95": 1.459, - "p99": 2.292, - "max": 5.641375000006519 - }, - "clientCpuPercent": 96.66597330877414, - "serverCpuPercent": 106.94786242972454, - "serverCpuUsPerRequest": 25.256094587046988, - "serverRssMiB": 114.453125, - "serverRetainedHeapMiB": 13.700973510742188, - "idleRssMiB": 81.109375, - "server": { - "type": "stats", - "elapsedMs": 3002.0048339999994, - "cpu": { - "user": 2529643, - "system": 680937 - }, - "memory": { - "rss": 120012800, - "heapTotal": 33832960, - "heapUsed": 17020200, - "external": 4277949, - "arrayBuffers": 286479 - }, - "retainedMemory": { - "rss": 120012800, - "heapTotal": 34095104, - "heapUsed": 14366512, - "external": 4277949, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117200 - }, - "idleMemory": { - "rss": 85049344, - "heapTotal": 31473664, - "heapUsed": 12358712, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 1, - "requests": 127318, - "errors": 0, - "elapsedMs": 3001.172749999998, - "rps": 42422.74957347926, - "latencyMs": { - "mean": 1.1780933080161506, - "p50": 1.121, - "p95": 1.371, - "p99": 2.291, - "max": 6.552707999988343 - }, - "clientCpuPercent": 96.86689978109398, - "serverCpuPercent": 106.67820347617355, - "serverCpuUsPerRequest": 25.1516046434911, - "serverRssMiB": 114.015625, - "serverRetainedHeapMiB": 13.774925231933594, - "idleRssMiB": 80.734375, - "server": { - "type": "stats", - "elapsedMs": 3001.7865840000004, - "cpu": { - "user": 2533656, - "system": 668596 - }, - "memory": { - "rss": 119554048, - "heapTotal": 34095104, - "heapUsed": 15607880, - "external": 4266805, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119554048, - "heapTotal": 34095104, - "heapUsed": 14444056, - "external": 4266805, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116752 - }, - "idleMemory": { - "rss": 84656128, - "heapTotal": 31473664, - "heapUsed": 12363608, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 1, - "requests": 126892, - "errors": 0, - "elapsedMs": 3001.1751249999943, - "rps": 42280.77160275685, - "latencyMs": { - "mean": 1.1820480208208848, - "p50": 1.123, - "p95": 1.453, - "p99": 2.297, - "max": 7.36241699999664 - }, - "clientCpuPercent": 96.62015308087047, - "serverCpuPercent": 107.30207460636588, - "serverCpuUsPerRequest": 25.38517794660026, - "serverRssMiB": 114.625, - "serverRetainedHeapMiB": 13.706779479980469, - "idleRssMiB": 80.59375, - "server": { - "type": "stats", - "elapsedMs": 3001.9699170000004, - "cpu": { - "user": 2548919, - "system": 672257 - }, - "memory": { - "rss": 120193024, - "heapTotal": 34095104, - "heapUsed": 18399864, - "external": 4284607, - "arrayBuffers": 295509 - }, - "retainedMemory": { - "rss": 120193024, - "heapTotal": 34095104, - "heapUsed": 14372600, - "external": 4284607, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117376 - }, - "idleMemory": { - "rss": 84508672, - "heapTotal": 31211520, - "heapUsed": 12362304, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "headers", - "round": 1, - "requests": 125846, - "errors": 0, - "elapsedMs": 3001.037958000001, - "rps": 41934.158035064735, - "latencyMs": { - "mean": 1.191882297824322, - "p50": 1.058, - "p95": 2.096, - "p99": 4.464, - "max": 6.2815840000112075 - }, - "clientCpuPercent": 93.93473323072175, - "serverCpuPercent": 130.31263844928796, - "serverCpuUsPerRequest": 31.086168809497323, - "serverRssMiB": 271.453125, - "serverRetainedHeapMiB": 12.2069091796875, - "idleRssMiB": 80.875, - "server": { - "type": "stats", - "elapsedMs": 3002.064916, - "cpu": { - "user": 3239522, - "system": 672548 - }, - "memory": { - "rss": 284639232, - "heapTotal": 169361408, - "heapUsed": 68803904, - "external": 4449658, - "arrayBuffers": 466030 - }, - "retainedMemory": { - "rss": 284639232, - "heapTotal": 159399936, - "heapUsed": 12799872, - "external": 4449658, - "arrayBuffers": 328903 - }, - "maxRssKiB": 277968 - }, - "idleMemory": { - "rss": 84803584, - "heapTotal": 30949376, - "heapUsed": 12362800, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 120406, - "errors": 0, - "elapsedMs": 3001.249542000005, - "rps": 40118.623365041, - "latencyMs": { - "mean": 1.245736625267812, - "p50": 1.195, - "p95": 1.449, - "p99": 2.403, - "max": 6.956374999994296 - }, - "clientCpuPercent": 94.08034755145313, - "serverCpuPercent": 107.93972935584226, - "serverCpuUsPerRequest": 26.9110509443051, - "serverRssMiB": 118.625, - "serverRetainedHeapMiB": 15.560836791992188, - "idleRssMiB": 86.953125, - "server": { - "type": "stats", - "elapsedMs": 3001.9085830000004, - "cpu": { - "user": 2604069, - "system": 636183 - }, - "memory": { - "rss": 124387328, - "heapTotal": 36012032, - "heapUsed": 19780104, - "external": 4258274, - "arrayBuffers": 290083 - }, - "retainedMemory": { - "rss": 124403712, - "heapTotal": 36012032, - "heapUsed": 16316720, - "external": 4258274, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121488 - }, - "idleMemory": { - "rss": 91176960, - "heapTotal": 33390592, - "heapUsed": 13961088, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 2, - "requests": 120834, - "errors": 0, - "elapsedMs": 3001.2316250000003, - "rps": 40261.47098859789, - "latencyMs": { - "mean": 1.2413366474667598, - "p50": 1.189, - "p95": 1.475, - "p99": 2.415, - "max": 6.2167090000002645 - }, - "clientCpuPercent": 94.27303032634143, - "serverCpuPercent": 107.25341451172585, - "serverCpuUsPerRequest": 26.6455798864558, - "serverRssMiB": 118.671875, - "serverRetainedHeapMiB": 15.527328491210938, - "idleRssMiB": 86.90625, - "server": { - "type": "stats", - "elapsedMs": 3001.94825, - "cpu": { - "user": 2588171, - "system": 631521 - }, - "memory": { - "rss": 124436480, - "heapTotal": 35487744, - "heapUsed": 21673064, - "external": 4267326, - "arrayBuffers": 301507 - }, - "retainedMemory": { - "rss": 124436480, - "heapTotal": 35487744, - "heapUsed": 16281584, - "external": 4267326, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121520 - }, - "idleMemory": { - "rss": 91127808, - "heapTotal": 32604160, - "heapUsed": 13964856, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 2, - "requests": 121249, - "errors": 0, - "elapsedMs": 3001.0283330000093, - "rps": 40402.48426404964, - "latencyMs": { - "mean": 1.2370902734290368, - "p50": 1.187, - "p95": 1.452, - "p99": 2.404, - "max": 6.1713330000056885 - }, - "clientCpuPercent": 94.25275892588486, - "serverCpuPercent": 107.48257183159375, - "serverCpuUsPerRequest": 26.608862753507246, - "serverRssMiB": 119.015625, - "serverRetainedHeapMiB": 15.565216064453125, - "idleRssMiB": 86.53125, - "server": { - "type": "stats", - "elapsedMs": 3001.694084, - "cpu": { - "user": 2591157, - "system": 635141 - }, - "memory": { - "rss": 124796928, - "heapTotal": 36012032, - "heapUsed": 19900560, - "external": 4256854, - "arrayBuffers": 291035 - }, - "retainedMemory": { - "rss": 124796928, - "heapTotal": 36012032, - "heapUsed": 16321312, - "external": 4256854, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121872 - }, - "idleMemory": { - "rss": 90734592, - "heapTotal": 32604160, - "heapUsed": 13963576, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 2, - "requests": 120596, - "errors": 0, - "elapsedMs": 3001.226291999992, - "rps": 40182.24161285614, - "latencyMs": { - "mean": 1.2438104602557198, - "p50": 1.19, - "p95": 1.488, - "p99": 2.407, - "max": 6.1712919999990845 - }, - "clientCpuPercent": 94.00527402816739, - "serverCpuPercent": 107.55559803569994, - "serverCpuUsPerRequest": 26.772902915519587, - "serverRssMiB": 118.734375, - "serverRetainedHeapMiB": 15.573158264160156, - "idleRssMiB": 87.015625, - "server": { - "type": "stats", - "elapsedMs": 3001.8939590000005, - "cpu": { - "user": 2605026, - "system": 623679 - }, - "memory": { - "rss": 124502016, - "heapTotal": 36274176, - "heapUsed": 20191808, - "external": 4258622, - "arrayBuffers": 292803 - }, - "retainedMemory": { - "rss": 124518400, - "heapTotal": 36274176, - "heapUsed": 16329640, - "external": 4258622, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121600 - }, - "idleMemory": { - "rss": 91242496, - "heapTotal": 33128448, - "heapUsed": 13964032, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 121602, - "errors": 0, - "elapsedMs": 3001.2002499999944, - "rps": 40517.78950771453, - "latencyMs": { - "mean": 1.23354138394109, - "p50": 1.177, - "p95": 1.494, - "p99": 2.388, - "max": 6.461834000001545 - }, - "clientCpuPercent": 94.909828159584, - "serverCpuPercent": 107.67486332865487, - "serverCpuUsPerRequest": 26.580821039127645, - "serverRssMiB": 114.78125, - "serverRetainedHeapMiB": 14.008377075195312, - "idleRssMiB": 81.46875, - "server": { - "type": "stats", - "elapsedMs": 3001.890042, - "cpu": { - "user": 2596347, - "system": 635934 - }, - "memory": { - "rss": 120356864, - "heapTotal": 34177024, - "heapUsed": 15940712, - "external": 4184977, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 120389632, - "heapTotal": 34177024, - "heapUsed": 14688848, - "external": 4184977, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117568 - }, - "idleMemory": { - "rss": 85426176, - "heapTotal": 31293440, - "heapUsed": 12368328, - "external": 4184917, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 111548, - "errors": 0, - "elapsedMs": 3001.319915999993, - "rps": 37166.31452893083, - "latencyMs": { - "mean": 1.3446931422975401, - "p50": 1.288, - "p95": 1.512, - "p99": 2.6, - "max": 7.578250000005937 - }, - "clientCpuPercent": 89.8176494158181, - "serverCpuPercent": 106.97565529714066, - "serverCpuUsPerRequest": 28.789704880410227, - "serverRssMiB": 138.453125, - "serverRetainedHeapMiB": 17.20671844482422, - "idleRssMiB": 88.46875, - "server": { - "type": "stats", - "elapsedMs": 3002.0232089999995, - "cpu": { - "user": 2595789, - "system": 615645 - }, - "memory": { - "rss": 145178624, - "heapTotal": 57524224, - "heapUsed": 28755176, - "external": 4377672, - "arrayBuffers": 386202 - }, - "retainedMemory": { - "rss": 145178624, - "heapTotal": 57524224, - "heapUsed": 18042552, - "external": 4377672, - "arrayBuffers": 343226 - }, - "maxRssKiB": 141776 - }, - "idleMemory": { - "rss": 92766208, - "heapTotal": 35241984, - "heapUsed": 15781616, - "external": 4400189, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 2, - "requests": 111190, - "errors": 0, - "elapsedMs": 3001.3669170000067, - "rps": 37046.453524295895, - "latencyMs": { - "mean": 1.3490911543933832, - "p50": 1.29, - "p95": 1.549, - "p99": 2.6, - "max": 7.231499999994412 - }, - "clientCpuPercent": 89.61066988398453, - "serverCpuPercent": 107.56791214842066, - "serverCpuUsPerRequest": 29.04311538807447, - "serverRssMiB": 139.984375, - "serverRetainedHeapMiB": 17.230224609375, - "idleRssMiB": 88.203125, - "server": { - "type": "stats", - "elapsedMs": 3002.1071669999997, - "cpu": { - "user": 2604633, - "system": 624671 - }, - "memory": { - "rss": 146784256, - "heapTotal": 58310656, - "heapUsed": 26937360, - "external": 4364699, - "arrayBuffers": 375601 - }, - "retainedMemory": { - "rss": 146800640, - "heapTotal": 58310656, - "heapUsed": 18067200, - "external": 4364699, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143360 - }, - "idleMemory": { - "rss": 92487680, - "heapTotal": 34979840, - "heapUsed": 15783448, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 2, - "requests": 111379, - "errors": 0, - "elapsedMs": 3001.330499999982, - "rps": 37109.875103725055, - "latencyMs": { - "mean": 1.3466948044424754, - "p50": 1.287, - "p95": 1.569, - "p99": 2.599, - "max": 10.20095900000888 - }, - "clientCpuPercent": 89.59783002904932, - "serverCpuPercent": 107.35435877814632, - "serverCpuUsPerRequest": 28.93563418597761, - "serverRssMiB": 139.671875, - "serverRetainedHeapMiB": 17.231307983398438, - "idleRssMiB": 88.390625, - "server": { - "type": "stats", - "elapsedMs": 3002.041125, - "cpu": { - "user": 2597976, - "system": 624846 - }, - "memory": { - "rss": 146456576, - "heapTotal": 58310656, - "heapUsed": 32590536, - "external": 4401963, - "arrayBuffers": 412865 - }, - "retainedMemory": { - "rss": 146456576, - "heapTotal": 58048512, - "heapUsed": 18068336, - "external": 4401963, - "arrayBuffers": 346082 - }, - "maxRssKiB": 143024 - }, - "idleMemory": { - "rss": 92684288, - "heapTotal": 34979840, - "heapUsed": 15779552, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 2, - "requests": 111140, - "errors": 0, - "elapsedMs": 3001.3755419999943, - "rps": 37029.68803628647, - "latencyMs": { - "mean": 1.3495941744196291, - "p50": 1.296, - "p95": 1.561, - "p99": 2.61, - "max": 6.100999999995111 - }, - "clientCpuPercent": 89.28832671882968, - "serverCpuPercent": 107.21559478968966, - "serverCpuUsPerRequest": 28.960995141263272, - "serverRssMiB": 139.296875, - "serverRetainedHeapMiB": 17.196250915527344, - "idleRssMiB": 88.359375, - "server": { - "type": "stats", - "elapsedMs": 3002.10525, - "cpu": { - "user": 2596001, - "system": 622724 - }, - "memory": { - "rss": 146063360, - "heapTotal": 57262080, - "heapUsed": 31304032, - "external": 4399372, - "arrayBuffers": 410274 - }, - "retainedMemory": { - "rss": 146079744, - "heapTotal": 56999936, - "heapUsed": 18031576, - "external": 4399372, - "arrayBuffers": 355745 - }, - "maxRssKiB": 142656 - }, - "idleMemory": { - "rss": 92651520, - "heapTotal": 35241984, - "heapUsed": 15780696, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 123883, - "errors": 0, - "elapsedMs": 3001.0604579999927, - "rps": 41279.74152262157, - "latencyMs": { - "mean": 1.210772393879759, - "p50": 1.154, - "p95": 1.433, - "p99": 2.367, - "max": 5.717833000002429 - }, - "clientCpuPercent": 95.4868134149401, - "serverCpuPercent": 106.48935343288717, - "serverCpuUsPerRequest": 25.80352429308299, - "serverRssMiB": 120.890625, - "serverRetainedHeapMiB": 15.57012939453125, - "idleRssMiB": 84.484375, - "server": { - "type": "stats", - "elapsedMs": 3001.8193340000003, - "cpu": { - "user": 2598144, - "system": 598474 - }, - "memory": { - "rss": 126763008, - "heapTotal": 39698432, - "heapUsed": 24097952, - "external": 4229064, - "arrayBuffers": 298515 - }, - "retainedMemory": { - "rss": 126779392, - "heapTotal": 38387712, - "heapUsed": 16326464, - "external": 4229064, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123808 - }, - "idleMemory": { - "rss": 88588288, - "heapTotal": 33406976, - "heapUsed": 14169536, - "external": 4208196, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 127271, - "errors": 0, - "elapsedMs": 3001.1244580000057, - "rps": 42407.77141405702, - "latencyMs": { - "mean": 1.178565467569218, - "p50": 1.122, - "p95": 1.411, - "p99": 2.277, - "max": 7.06541599999764 - }, - "clientCpuPercent": 96.85572993321007, - "serverCpuPercent": 106.78447410358731, - "serverCpuUsPerRequest": 25.185996809956706, - "serverRssMiB": 114.3125, - "serverRetainedHeapMiB": 13.747901916503906, - "idleRssMiB": 80.9375, - "server": { - "type": "stats", - "elapsedMs": 3001.79125, - "cpu": { - "user": 2522524, - "system": 682923 - }, - "memory": { - "rss": 119865344, - "heapTotal": 33570816, - "heapUsed": 15576848, - "external": 4269177, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119881728, - "heapTotal": 33570816, - "heapUsed": 14415720, - "external": 4269177, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117072 - }, - "idleMemory": { - "rss": 84869120, - "heapTotal": 31211520, - "heapUsed": 12359880, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 2, - "requests": 126921, - "errors": 0, - "elapsedMs": 3001.122457999998, - "rps": 42291.176643482395, - "latencyMs": { - "mean": 1.1817827226384239, - "p50": 1.124, - "p95": 1.378, - "p99": 2.284, - "max": 6.6991669999843 - }, - "clientCpuPercent": 96.61131928392646, - "serverCpuPercent": 107.02803045602843, - "serverCpuUsPerRequest": 25.3137069515683, - "serverRssMiB": 114.109375, - "serverRetainedHeapMiB": 13.702850341796875, - "idleRssMiB": 80.5625, - "server": { - "type": "stats", - "elapsedMs": 3001.86875, - "cpu": { - "user": 2530346, - "system": 682495 - }, - "memory": { - "rss": 119652352, - "heapTotal": 34095104, - "heapUsed": 21298328, - "external": 4303828, - "arrayBuffers": 314730 - }, - "retainedMemory": { - "rss": 119685120, - "heapTotal": 34095104, - "heapUsed": 14368480, - "external": 4303828, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116880 - }, - "idleMemory": { - "rss": 84475904, - "heapTotal": 31473664, - "heapUsed": 12362368, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 2, - "requests": 126929, - "errors": 0, - "elapsedMs": 3001.149167000025, - "rps": 42293.46591488464, - "latencyMs": { - "mean": 1.1817198897809036, - "p50": 1.12, - "p95": 1.46, - "p99": 2.294, - "max": 7.037000000011176 - }, - "clientCpuPercent": 96.83780572976684, - "serverCpuPercent": 107.19241768809678, - "serverCpuUsPerRequest": 25.350203657162666, - "serverRssMiB": 114.453125, - "serverRetainedHeapMiB": 13.810600280761719, - "idleRssMiB": 80.734375, - "server": { - "type": "stats", - "elapsedMs": 3001.7757500000002, - "cpu": { - "user": 2541692, - "system": 675984 - }, - "memory": { - "rss": 120012800, - "heapTotal": 33832960, - "heapUsed": 15587512, - "external": 4266805, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 120029184, - "heapTotal": 33832960, - "heapUsed": 14481464, - "external": 4266805, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117216 - }, - "idleMemory": { - "rss": 84656128, - "heapTotal": 31473664, - "heapUsed": 12364112, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "headers", - "round": 2, - "requests": 125152, - "errors": 0, - "elapsedMs": 3002.7404589999933, - "rps": 41679.259899032215, - "latencyMs": { - "mean": 1.1987949939753697, - "p50": 1.06, - "p95": 2.108, - "p99": 4.61, - "max": 6.800125000008848 - }, - "clientCpuPercent": 93.29237868706542, - "serverCpuPercent": 130.48791352397126, - "serverCpuUsPerRequest": 31.321433137305036, - "serverRssMiB": 270.015625, - "serverRetainedHeapMiB": 12.189720153808594, - "idleRssMiB": 80.65625, - "server": { - "type": "stats", - "elapsedMs": 3004.063667, - "cpu": { - "user": 3252756, - "system": 667184 - }, - "memory": { - "rss": 283131904, - "heapTotal": 193216512, - "heapUsed": 70129488, - "external": 4283764, - "arrayBuffers": 300136 - }, - "retainedMemory": { - "rss": 283131904, - "heapTotal": 150487040, - "heapUsed": 12781848, - "external": 4265704, - "arrayBuffers": 277690 - }, - "maxRssKiB": 276496 - }, - "idleMemory": { - "rss": 84574208, - "heapTotal": 31735808, - "heapUsed": 12362240, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 140531, - "errors": 0, - "elapsedMs": 3000.884665999998, - "rps": 46829.85707255438, - "latencyMs": { - "mean": 1.067312543132809, - "p50": 0.94, - "p95": 1.832, - "p99": 1.982, - "max": 5.425333000021055 - }, - "clientCpuPercent": 100.14206923872501, - "serverCpuPercent": 106.5253694020538, - "serverCpuUsPerRequest": 22.752374920835972, - "serverRssMiB": 111.1875, - "serverRetainedHeapMiB": 11.986892700195312, - "idleRssMiB": 75.515625, - "server": { - "type": "stats", - "elapsedMs": 3001.5516660000003, - "cpu": { - "user": 2435286, - "system": 762128 - }, - "memory": { - "rss": 116588544, - "heapTotal": 31211520, - "heapUsed": 15164712, - "external": 4190857, - "arrayBuffers": 290091 - }, - "retainedMemory": { - "rss": 116604928, - "heapTotal": 31211520, - "heapUsed": 12569168, - "external": 4190857, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113872 - }, - "idleMemory": { - "rss": 79183872, - "heapTotal": 20725760, - "heapUsed": 10639712, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 94463, - "errors": 0, - "elapsedMs": 3001.5540420000034, - "rps": 31471.36405948472, - "latencyMs": { - "mean": 1.5879216279495307, - "p50": 1.534, - "p95": 1.897, - "p99": 3.078, - "max": 6.354249999974854 - }, - "clientCpuPercent": 79.30268676468485, - "serverCpuPercent": 106.36537353798794, - "serverCpuUsPerRequest": 33.805034775520575, - "serverRssMiB": 166.65625, - "serverRetainedHeapMiB": 15.684585571289062, - "idleRssMiB": 86.078125, - "server": { - "type": "stats", - "elapsedMs": 3002.222334, - "cpu": { - "user": 2647949, - "system": 545376 - }, - "memory": { - "rss": 174751744, - "heapTotal": 92635136, - "heapUsed": 43767616, - "external": 4631394, - "arrayBuffers": 663203 - }, - "retainedMemory": { - "rss": 174768128, - "heapTotal": 90537984, - "heapUsed": 16446480, - "external": 4631394, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170672 - }, - "idleMemory": { - "rss": 90259456, - "heapTotal": 33390592, - "heapUsed": 14021936, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 2, - "requests": 94132, - "errors": 0, - "elapsedMs": 3001.542791999993, - "rps": 31361.20539440246, - "latencyMs": { - "mean": 1.5936195616156685, - "p50": 1.534, - "p95": 1.887, - "p99": 3.074, - "max": 7.241707999986829 - }, - "clientCpuPercent": 79.27703067709606, - "serverCpuPercent": 106.5841591059435, - "serverCpuUsPerRequest": 33.994369608634685, - "serverRssMiB": 166.609375, - "serverRetainedHeapMiB": 15.668502807617188, - "idleRssMiB": 86.109375, - "server": { - "type": "stats", - "elapsedMs": 3002.282916, - "cpu": { - "user": 2648172, - "system": 551786 - }, - "memory": { - "rss": 174702592, - "heapTotal": 92635136, - "heapUsed": 36665312, - "external": 4451574, - "arrayBuffers": 485755 - }, - "retainedMemory": { - "rss": 174768128, - "heapTotal": 90013696, - "heapUsed": 16429616, - "external": 4451574, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170672 - }, - "idleMemory": { - "rss": 90292224, - "heapTotal": 33652736, - "heapUsed": 14024704, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 2, - "requests": 94130, - "errors": 0, - "elapsedMs": 3001.325375000015, - "rps": 31362.810838194953, - "latencyMs": { - "mean": 1.5936195091787495, - "p50": 1.531, - "p95": 1.918, - "p99": 3.064, - "max": 6.587999999988824 - }, - "clientCpuPercent": 79.46086152022049, - "serverCpuPercent": 106.35577208901609, - "serverCpuUsPerRequest": 33.9193349622862, - "serverRssMiB": 166.671875, - "serverRetainedHeapMiB": 15.707038879394531, - "idleRssMiB": 85.734375, - "server": { - "type": "stats", - "elapsedMs": 3002.0251249999997, - "cpu": { - "user": 2646859, - "system": 545968 - }, - "memory": { - "rss": 174768128, - "heapTotal": 92635136, - "heapUsed": 37902792, - "external": 4459734, - "arrayBuffers": 493915 - }, - "retainedMemory": { - "rss": 174784512, - "heapTotal": 90275840, - "heapUsed": 16470024, - "external": 4459734, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170688 - }, - "idleMemory": { - "rss": 89899008, - "heapTotal": 33128448, - "heapUsed": 14023136, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 2, - "requests": 94432, - "errors": 0, - "elapsedMs": 3001.5129580000066, - "rps": 31461.46670741769, - "latencyMs": { - "mean": 1.5885492865659872, - "p50": 1.531, - "p95": 1.863, - "p99": 3.059, - "max": 6.659999999974389 - }, - "clientCpuPercent": 79.63803699827288, - "serverCpuPercent": 106.57046143461197, - "serverCpuUsPerRequest": 33.88022068790241, - "serverRssMiB": 166.328125, - "serverRetainedHeapMiB": 15.75140380859375, - "idleRssMiB": 85.734375, - "server": { - "type": "stats", - "elapsedMs": 3002.123625, - "cpu": { - "user": 2648118, - "system": 551259 - }, - "memory": { - "rss": 174407680, - "heapTotal": 92635136, - "heapUsed": 39719712, - "external": 4471838, - "arrayBuffers": 506019 - }, - "retainedMemory": { - "rss": 174424064, - "heapTotal": 90275840, - "heapUsed": 16516544, - "external": 4471838, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170336 - }, - "idleMemory": { - "rss": 89899008, - "heapTotal": 33128448, - "heapUsed": 14024968, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 98359, - "errors": 0, - "elapsedMs": 3001.4642919999897, - "rps": 32770.3382186365, - "latencyMs": { - "mean": 1.5250803330046259, - "p50": 1.467, - "p95": 1.732, - "p99": 2.932, - "max": 8.119791000004625 - }, - "clientCpuPercent": 82.54957443951523, - "serverCpuPercent": 106.75629159296223, - "serverCpuUsPerRequest": 32.58364765806891, - "serverRssMiB": 120.75, - "serverRetainedHeapMiB": 14.083168029785156, - "idleRssMiB": 81.78125, - "server": { - "type": "stats", - "elapsedMs": 3002.0666250000004, - "cpu": { - "user": 2648973, - "system": 555922 - }, - "memory": { - "rss": 126615552, - "heapTotal": 38895616, - "heapUsed": 19899352, - "external": 4275233, - "arrayBuffers": 384978 - }, - "retainedMemory": { - "rss": 126828544, - "heapTotal": 34701312, - "heapUsed": 14767272, - "external": 4275233, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123856 - }, - "idleMemory": { - "rss": 85753856, - "heapTotal": 31555584, - "heapUsed": 12373704, - "external": 4167902, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 3, - "requests": 111256, - "errors": 0, - "elapsedMs": 3001.340541999991, - "rps": 37068.76925264295, - "latencyMs": { - "mean": 1.3482804300711857, - "p50": 1.292, - "p95": 1.539, - "p99": 2.608, - "max": 8.955667000001995 - }, - "clientCpuPercent": 89.55848103157393, - "serverCpuPercent": 107.20462982673986, - "serverCpuUsPerRequest": 28.92633206298986, - "serverRssMiB": 139.453125, - "serverRetainedHeapMiB": 17.269508361816406, - "idleRssMiB": 88.5, - "server": { - "type": "stats", - "elapsedMs": 3001.9487080000004, - "cpu": { - "user": 2595605, - "system": 622623 - }, - "memory": { - "rss": 146227200, - "heapTotal": 58310656, - "heapUsed": 29475200, - "external": 4381291, - "arrayBuffers": 392193 - }, - "retainedMemory": { - "rss": 146227200, - "heapTotal": 57786368, - "heapUsed": 18108392, - "external": 4381291, - "arrayBuffers": 343226 - }, - "maxRssKiB": 142800 - }, - "idleMemory": { - "rss": 92798976, - "heapTotal": 35241984, - "heapUsed": 15781568, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 3, - "requests": 112196, - "errors": 0, - "elapsedMs": 3001.304332999978, - "rps": 37382.413628095346, - "latencyMs": { - "mean": 1.3369397838069075, - "p50": 1.28, - "p95": 1.55, - "p99": 2.595, - "max": 10.964291000011144 - }, - "clientCpuPercent": 90.04455064037718, - "serverCpuPercent": 107.1805568810677, - "serverCpuUsPerRequest": 28.676779920852795, - "serverRssMiB": 140.09375, - "serverRetainedHeapMiB": 17.26769256591797, - "idleRssMiB": 88.484375, - "server": { - "type": "stats", - "elapsedMs": 3001.8690829999996, - "cpu": { - "user": 2608307, - "system": 609113 - }, - "memory": { - "rss": 146898944, - "heapTotal": 58310656, - "heapUsed": 34976760, - "external": 4415284, - "arrayBuffers": 426186 - }, - "retainedMemory": { - "rss": 146898944, - "heapTotal": 58048512, - "heapUsed": 18106488, - "external": 4415284, - "arrayBuffers": 368658 - }, - "maxRssKiB": 143456 - }, - "idleMemory": { - "rss": 92782592, - "heapTotal": 35241984, - "heapUsed": 15780760, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 3, - "requests": 110400, - "errors": 0, - "elapsedMs": 3001.3605830000015, - "rps": 36783.3177477296, - "latencyMs": { - "mean": 1.3587030719022213, - "p50": 1.298, - "p95": 1.574, - "p99": 2.612, - "max": 9.647082999988925 - }, - "clientCpuPercent": 89.15276675371726, - "serverCpuPercent": 107.05331584964335, - "serverCpuUsPerRequest": 29.11100543478261, - "serverRssMiB": 140.859375, - "serverRetainedHeapMiB": 17.20842742919922, - "idleRssMiB": 88.359375, - "server": { - "type": "stats", - "elapsedMs": 3002.1069169999996, - "cpu": { - "user": 2589076, - "system": 624779 - }, - "memory": { - "rss": 147701760, - "heapTotal": 59097088, - "heapUsed": 28256048, - "external": 4375443, - "arrayBuffers": 386345 - }, - "retainedMemory": { - "rss": 147734528, - "heapTotal": 58834944, - "heapUsed": 18044344, - "external": 4375443, - "arrayBuffers": 343226 - }, - "maxRssKiB": 144272 - }, - "idleMemory": { - "rss": 92651520, - "heapTotal": 35241984, - "heapUsed": 15780360, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 121363, - "errors": 0, - "elapsedMs": 3001.235457999981, - "rps": 40437.68031478481, - "latencyMs": { - "mean": 1.2359639740118176, - "p50": 1.179, - "p95": 1.408, - "p99": 2.381, - "max": 9.89837500001886 - }, - "clientCpuPercent": 94.68737257601792, - "serverCpuPercent": 106.601874698492, - "serverCpuUsPerRequest": 26.36769031747732, - "serverRssMiB": 120.890625, - "serverRetainedHeapMiB": 15.621009826660156, - "idleRssMiB": 84.515625, - "server": { - "type": "stats", - "elapsedMs": 3001.8815420000005, - "cpu": { - "user": 2572662, - "system": 627400 - }, - "memory": { - "rss": 126763008, - "heapTotal": 39174144, - "heapUsed": 23262000, - "external": 4223352, - "arrayBuffers": 292803 - }, - "retainedMemory": { - "rss": 126763008, - "heapTotal": 38912000, - "heapUsed": 16379816, - "external": 4223352, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123792 - }, - "idleMemory": { - "rss": 88621056, - "heapTotal": 33406976, - "heapUsed": 14170952, - "external": 4208196, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 110290, - "errors": 0, - "elapsedMs": 3001.299291000003, - "rps": 36747.418136780514, - "latencyMs": { - "mean": 1.360012395439307, - "p50": 1.301, - "p95": 1.533, - "p99": 2.641, - "max": 10.809832999977516 - }, - "clientCpuPercent": 89.23272024322739, - "serverCpuPercent": 107.03467471799478, - "serverCpuUsPerRequest": 29.13462689273733, - "serverRssMiB": 139.828125, - "serverRetainedHeapMiB": 17.190460205078125, - "idleRssMiB": 88.5625, - "server": { - "type": "stats", - "elapsedMs": 3002.0719999999997, - "cpu": { - "user": 2587164, - "system": 626094 - }, - "memory": { - "rss": 146620416, - "heapTotal": 58048512, - "heapUsed": 36752424, - "external": 4429216, - "arrayBuffers": 437746 - }, - "retainedMemory": { - "rss": 146620416, - "heapTotal": 58048512, - "heapUsed": 18025504, - "external": 4429216, - "arrayBuffers": 370018 - }, - "maxRssKiB": 143184 - }, - "idleMemory": { - "rss": 92864512, - "heapTotal": 35504128, - "heapUsed": 15778576, - "external": 4400189, - "arrayBuffers": 277651 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 3, - "requests": 127134, - "errors": 0, - "elapsedMs": 3001.187042000005, - "rps": 42361.23847691856, - "latencyMs": { - "mean": 1.179790371655115, - "p50": 1.12, - "p95": 1.602, - "p99": 2.322, - "max": 6.2537500000034925 - }, - "clientCpuPercent": 96.8934944508532, - "serverCpuPercent": 106.83702309603808, - "serverCpuUsPerRequest": 25.22669781490396, - "serverRssMiB": 114.3125, - "serverRetainedHeapMiB": 13.716453552246094, - "idleRssMiB": 81.109375, - "server": { - "type": "stats", - "elapsedMs": 3001.9284580000003, - "cpu": { - "user": 2524719, - "system": 682452 - }, - "memory": { - "rss": 119865344, - "heapTotal": 33832960, - "heapUsed": 17453272, - "external": 4278286, - "arrayBuffers": 289188 - }, - "retainedMemory": { - "rss": 119881728, - "heapTotal": 33832960, - "heapUsed": 14382744, - "external": 4278286, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117072 - }, - "idleMemory": { - "rss": 85049344, - "heapTotal": 31473664, - "heapUsed": 12362080, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 3, - "requests": 127192, - "errors": 0, - "elapsedMs": 3001.0981249999895, - "rps": 42381.8198213697, - "latencyMs": { - "mean": 1.1792671386564906, - "p50": 1.12, - "p95": 1.477, - "p99": 2.292, - "max": 6.4476250000006985 - }, - "clientCpuPercent": 96.74868594974748, - "serverCpuPercent": 106.76314242956877, - "serverCpuUsPerRequest": 25.19543681992578, - "serverRssMiB": 114.828125, - "serverRetainedHeapMiB": 13.788360595703125, - "idleRssMiB": 80.625, - "server": { - "type": "stats", - "elapsedMs": 3001.6520000000005, - "cpu": { - "user": 2533561, - "system": 671097 - }, - "memory": { - "rss": 120406016, - "heapTotal": 33832960, - "heapUsed": 19007104, - "external": 4289251, - "arrayBuffers": 300153 - }, - "retainedMemory": { - "rss": 120406016, - "heapTotal": 33832960, - "heapUsed": 14458144, - "external": 4289251, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117584 - }, - "idleMemory": { - "rss": 84541440, - "heapTotal": 31211520, - "heapUsed": 12361824, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "headers", - "round": 3, - "requests": 125091, - "errors": 0, - "elapsedMs": 3001.1301669999957, - "rps": 41681.297724265016, - "latencyMs": { - "mean": 1.1991121726183023, - "p50": 1.066, - "p95": 2.116, - "p99": 4.517, - "max": 6.284832999983337 - }, - "clientCpuPercent": 93.553789531449, - "serverCpuPercent": 130.07255758070815, - "serverCpuUsPerRequest": 31.217825423091988, - "serverRssMiB": 274.5, - "serverRetainedHeapMiB": 12.205413818359375, - "idleRssMiB": 80.75, - "server": { - "type": "stats", - "elapsedMs": 3002.223584, - "cpu": { - "user": 3238617, - "system": 666452 - }, - "memory": { - "rss": 287834112, - "heapTotal": 180371456, - "heapUsed": 68664944, - "external": 4360132, - "arrayBuffers": 376504 - }, - "retainedMemory": { - "rss": 287850496, - "heapTotal": 157827072, - "heapUsed": 12798304, - "external": 4360132, - "arrayBuffers": 277690 - }, - "maxRssKiB": 281104 - }, - "idleMemory": { - "rss": 84672512, - "heapTotal": 31473664, - "heapUsed": 12364912, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 139359, - "errors": 0, - "elapsedMs": 3000.972207999992, - "rps": 46437.95088421571, - "latencyMs": { - "mean": 1.0762840690949618, - "p50": 0.942, - "p95": 1.835, - "p99": 1.986, - "max": 6.978000000002794 - }, - "clientCpuPercent": 100.2470463398576, - "serverCpuPercent": 106.3528944217896, - "serverCpuUsPerRequest": 22.909241599035585, - "serverRssMiB": 110.703125, - "serverRetainedHeapMiB": 11.993621826171875, - "idleRssMiB": 74.984375, - "server": { - "type": "stats", - "elapsedMs": 3001.901375, - "cpu": { - "user": 2428706, - "system": 763903 - }, - "memory": { - "rss": 116080640, - "heapTotal": 31473664, - "heapUsed": 13902992, - "external": 4180150, - "arrayBuffers": 279384 - }, - "retainedMemory": { - "rss": 116080640, - "heapTotal": 31473664, - "heapUsed": 12576224, - "external": 4180150, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113360 - }, - "idleMemory": { - "rss": 78626816, - "heapTotal": 20987904, - "heapUsed": 10640080, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 126694, - "errors": 0, - "elapsedMs": 3001.1816249999974, - "rps": 42214.70601600131, - "latencyMs": { - "mean": 1.1838723671207332, - "p50": 1.126, - "p95": 1.455, - "p99": 2.286, - "max": 6.544541000010213 - }, - "clientCpuPercent": 96.75812272774402, - "serverCpuPercent": 106.87949334402064, - "serverCpuUsPerRequest": 25.322990828294948, - "serverRssMiB": 113.875, - "serverRetainedHeapMiB": 13.7899169921875, - "idleRssMiB": 80.75, - "server": { - "type": "stats", - "elapsedMs": 3001.764791, - "cpu": { - "user": 2527573, - "system": 680698 - }, - "memory": { - "rss": 119406592, - "heapTotal": 33570816, - "heapUsed": 21729480, - "external": 4308909, - "arrayBuffers": 317439 - }, - "retainedMemory": { - "rss": 119422976, - "heapTotal": 33570816, - "heapUsed": 14459776, - "external": 4308909, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116624 - }, - "idleMemory": { - "rss": 84672512, - "heapTotal": 31211520, - "heapUsed": 12363384, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 3, - "requests": 93934, - "errors": 0, - "elapsedMs": 3001.5857909999904, - "rps": 31294.79100069484, - "latencyMs": { - "mean": 1.5968858806396282, - "p50": 1.535, - "p95": 1.92, - "p99": 3.074, - "max": 21.32458400001633 - }, - "clientCpuPercent": 79.30218110497471, - "serverCpuPercent": 106.65435437540438, - "serverCpuUsPerRequest": 34.08799795601167, - "serverRssMiB": 165.40625, - "serverRetainedHeapMiB": 15.698776245117188, - "idleRssMiB": 85.578125, - "server": { - "type": "stats", - "elapsedMs": 3002.2421670000003, - "cpu": { - "user": 2650263, - "system": 551759 - }, - "memory": { - "rss": 173441024, - "heapTotal": 92635136, - "heapUsed": 34083608, - "external": 4434846, - "arrayBuffers": 469027 - }, - "retainedMemory": { - "rss": 173490176, - "heapTotal": 89751552, - "heapUsed": 16461360, - "external": 4434846, - "arrayBuffers": 277690 - }, - "maxRssKiB": 169424 - }, - "idleMemory": { - "rss": 89735168, - "heapTotal": 33390592, - "heapUsed": 14022848, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 3, - "requests": 94318, - "errors": 0, - "elapsedMs": 3001.55016600003, - "rps": 31423.096328152144, - "latencyMs": { - "mean": 1.5904383136518165, - "p50": 1.532, - "p95": 1.908, - "p99": 3.067, - "max": 7.096832999959588 - }, - "clientCpuPercent": 79.48196325431584, - "serverCpuPercent": 106.51070480151546, - "serverCpuUsPerRequest": 33.90431306855531, - "serverRssMiB": 166.40625, - "serverRetainedHeapMiB": 15.642044067382812, - "idleRssMiB": 85.890625, - "server": { - "type": "stats", - "elapsedMs": 3002.315125, - "cpu": { - "user": 2650947, - "system": 546840 - }, - "memory": { - "rss": 174489600, - "heapTotal": 92635136, - "heapUsed": 42417104, - "external": 4554102, - "arrayBuffers": 588283 - }, - "retainedMemory": { - "rss": 174505984, - "heapTotal": 90275840, - "heapUsed": 16401872, - "external": 4554102, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170416 - }, - "idleMemory": { - "rss": 90062848, - "heapTotal": 33652736, - "heapUsed": 14024080, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 3, - "requests": 94880, - "errors": 0, - "elapsedMs": 3001.5262079999666, - "rps": 31610.58522398251, - "latencyMs": { - "mean": 1.5809532960475332, - "p50": 1.516, - "p95": 1.899, - "p99": 3.043, - "max": 7.8711659999680705 - }, - "clientCpuPercent": 80.31770615810751, - "serverCpuPercent": 106.47573065664461, - "serverCpuUsPerRequest": 33.69195826306914, - "serverRssMiB": 166.75, - "serverRetainedHeapMiB": 15.676223754882812, - "idleRssMiB": 85.984375, - "server": { - "type": "stats", - "elapsedMs": 3002.2738329999997, - "cpu": { - "user": 2657442, - "system": 539251 - }, - "memory": { - "rss": 174850048, - "heapTotal": 92372992, - "heapUsed": 44372808, - "external": 4568110, - "arrayBuffers": 602291 - }, - "retainedMemory": { - "rss": 174931968, - "heapTotal": 90537984, - "heapUsed": 16437712, - "external": 4568110, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170832 - }, - "idleMemory": { - "rss": 90161152, - "heapTotal": 33128448, - "heapUsed": 14024776, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 98094, - "errors": 0, - "elapsedMs": 3001.4504580000066, - "rps": 32682.19861452059, - "latencyMs": { - "mean": 1.5291559823230807, - "p50": 1.473, - "p95": 1.749, - "p99": 2.944, - "max": 6.089375000039581 - }, - "clientCpuPercent": 82.22970975321674, - "serverCpuPercent": 106.72597119746422, - "serverCpuUsPerRequest": 32.66309866046853, - "serverRssMiB": 120.765625, - "serverRetainedHeapMiB": 14.074775695800781, - "idleRssMiB": 81.9375, - "server": { - "type": "stats", - "elapsedMs": 3002.1314999999995, - "cpu": { - "user": 2646175, - "system": 557879 - }, - "memory": { - "rss": 126631936, - "heapTotal": 37584896, - "heapUsed": 16043040, - "external": 4246401, - "arrayBuffers": 356146 - }, - "retainedMemory": { - "rss": 126451712, - "heapTotal": 34177024, - "heapUsed": 14758472, - "external": 4246401, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123824 - }, - "idleMemory": { - "rss": 85917696, - "heapTotal": 31817728, - "heapUsed": 12372336, - "external": 4167902, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 94309, - "errors": 0, - "elapsedMs": 3001.5593339999905, - "rps": 31420.001907581915, - "latencyMs": { - "mean": 1.5906521562099314, - "p50": 1.53, - "p95": 1.902, - "p99": 3.062, - "max": 7.441749999998137 - }, - "clientCpuPercent": 79.74485038115884, - "serverCpuPercent": 106.55642974396753, - "serverCpuUsPerRequest": 33.921492116340964, - "serverRssMiB": 166.328125, - "serverRetainedHeapMiB": 15.687019348144531, - "idleRssMiB": 86.1875, - "server": { - "type": "stats", - "elapsedMs": 3002.2608750000004, - "cpu": { - "user": 2651142, - "system": 547960 - }, - "memory": { - "rss": 174407680, - "heapTotal": 92635136, - "heapUsed": 40410304, - "external": 4543962, - "arrayBuffers": 575771 - }, - "retainedMemory": { - "rss": 174440448, - "heapTotal": 90013696, - "heapUsed": 16449032, - "external": 4543962, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170352 - }, - "idleMemory": { - "rss": 90374144, - "heapTotal": 32866304, - "heapUsed": 14022792, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "round": 3, - "requests": 120300, - "errors": 0, - "elapsedMs": 3001.2446669999626, - "rps": 40083.36985076648, - "latencyMs": { - "mean": 1.2468814877888672, - "p50": 1.196, - "p95": 1.443, - "p99": 2.404, - "max": 6.258458999975119 - }, - "clientCpuPercent": 93.84179940302198, - "serverCpuPercent": 107.6306940651594, - "serverCpuUsPerRequest": 26.85773067331671, - "serverRssMiB": 118.3125, - "serverRetainedHeapMiB": 15.570831298828125, - "idleRssMiB": 86.328125, - "server": { - "type": "stats", - "elapsedMs": 3001.9178340000003, - "cpu": { - "user": 2595967, - "system": 635018 - }, - "memory": { - "rss": 124059648, - "heapTotal": 36012032, - "heapUsed": 19346936, - "external": 4253318, - "arrayBuffers": 287499 - }, - "retainedMemory": { - "rss": 124076032, - "heapTotal": 36012032, - "heapUsed": 16327200, - "external": 4253318, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121168 - }, - "idleMemory": { - "rss": 90521600, - "heapTotal": 33128448, - "heapUsed": 13969032, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "round": 3, - "requests": 119194, - "errors": 0, - "elapsedMs": 3001.226708000002, - "rps": 39715.09372560199, - "latencyMs": { - "mean": 1.258393483069654, - "p50": 1.207, - "p95": 1.48, - "p99": 2.421, - "max": 5.9237499999580905 - }, - "clientCpuPercent": 93.47427811841258, - "serverCpuPercent": 107.80990565386251, - "serverCpuUsPerRequest": 27.152759367082236, - "serverRssMiB": 118.65625, - "serverRetainedHeapMiB": 15.55908203125, - "idleRssMiB": 86.296875, - "server": { - "type": "stats", - "elapsedMs": 3001.9931659999997, - "cpu": { - "user": 2609072, - "system": 627374 - }, - "memory": { - "rss": 124420096, - "heapTotal": 36012032, - "heapUsed": 23858000, - "external": 4279294, - "arrayBuffers": 313475 - }, - "retainedMemory": { - "rss": 124452864, - "heapTotal": 36012032, - "heapUsed": 16314880, - "external": 4279294, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121536 - }, - "idleMemory": { - "rss": 90488832, - "heapTotal": 33128448, - "heapUsed": 13964024, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "round": 3, - "requests": 121933, - "errors": 0, - "elapsedMs": 3001.2021669999813, - "rps": 40628.052765230714, - "latencyMs": { - "mean": 1.2301952723627012, - "p50": 1.182, - "p95": 1.449, - "p99": 2.371, - "max": 5.660957999993116 - }, - "clientCpuPercent": 94.68479102294403, - "serverCpuPercent": 108.24912355524052, - "serverCpuUsPerRequest": 26.64934841265285, - "serverRssMiB": 118.953125, - "serverRetainedHeapMiB": 15.6287841796875, - "idleRssMiB": 86.84375, - "server": { - "type": "stats", - "elapsedMs": 3001.8118329999998, - "cpu": { - "user": 2614600, - "system": 634835 - }, - "memory": { - "rss": 124731392, - "heapTotal": 36012032, - "heapUsed": 23298568, - "external": 4276438, - "arrayBuffers": 310619 - }, - "retainedMemory": { - "rss": 124731392, - "heapTotal": 36012032, - "heapUsed": 16387968, - "external": 4276438, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121808 - }, - "idleMemory": { - "rss": 91062272, - "heapTotal": 33128448, - "heapUsed": 13963512, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 123203, - "errors": 0, - "elapsedMs": 3001.1745420000516, - "rps": 41051.59439273888, - "latencyMs": { - "mean": 1.2174357200149404, - "p50": 1.163, - "p95": 1.462, - "p99": 2.359, - "max": 5.689416000037454 - }, - "clientCpuPercent": 95.16517483507131, - "serverCpuPercent": 107.32477683186254, - "serverCpuUsPerRequest": 26.150183031257356, - "serverRssMiB": 115.09375, - "serverRetainedHeapMiB": 13.984550476074219, - "idleRssMiB": 82.03125, - "server": { - "type": "stats", - "elapsedMs": 3001.898625, - "cpu": { - "user": 2589192, - "system": 632589 - }, - "memory": { - "rss": 120684544, - "heapTotal": 34177024, - "heapUsed": 20473856, - "external": 4214217, - "arrayBuffers": 306947 - }, - "retainedMemory": { - "rss": 120733696, - "heapTotal": 34177024, - "heapUsed": 14663864, - "external": 4214217, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117904 - }, - "idleMemory": { - "rss": 86016000, - "heapTotal": 31555584, - "heapUsed": 12365704, - "external": 4184917, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 121190, - "errors": 0, - "elapsedMs": 3001.2375830000383, - "rps": 40380.00879585762, - "latencyMs": { - "mean": 1.2376590867976334, - "p50": 1.184, - "p95": 1.449, - "p99": 2.385, - "max": 7.806041000003461 - }, - "clientCpuPercent": 94.30859509531751, - "serverCpuPercent": 107.71886218069031, - "serverCpuUsPerRequest": 26.68330720356465, - "serverRssMiB": 118.953125, - "serverRetainedHeapMiB": 15.532058715820312, - "idleRssMiB": 87.015625, - "server": { - "type": "stats", - "elapsedMs": 3002.0276249999997, - "cpu": { - "user": 2598699, - "system": 635051 - }, - "memory": { - "rss": 124731392, - "heapTotal": 36274176, - "heapUsed": 17647400, - "external": 4245898, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 124731392, - "heapTotal": 36274176, - "heapUsed": 16286544, - "external": 4245898, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121808 - }, - "idleMemory": { - "rss": 91242496, - "heapTotal": 33128448, - "heapUsed": 13960240, - "external": 4442600, - "arrayBuffers": 212115 - } - } - ], - "finishedAt": "2026-10-27T16:17:35.486Z", - "elapsedSeconds": 308.94296879200004 - }, - "groups": [ - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 3, - "errors": 0, - "rps": 32770.3382186365, - "cpuUs": 32.58364765806891, - "meanMs": 1.5250803330046259, - "p95Ms": 1.749, - "rssMiB": 120.765625, - "heapMiB": 14.074775695800781, - "clientCpu": 82.54957443951523 - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 3, - "errors": 0, - "rps": 31471.36405948472, - "cpuUs": 33.82337126223869, - "meanMs": 1.5879216279495307, - "p95Ms": 1.902, - "rssMiB": 166.328125, - "heapMiB": 15.684585571289062, - "clientCpu": 79.74485038115884 - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "rounds": 3, - "errors": 0, - "rps": 31294.79100069484, - "cpuUs": 34.08799795601167, - "meanMs": 1.5968858806396282, - "p95Ms": 1.92, - "rssMiB": 166.359375, - "heapMiB": 15.676551818847656, - "clientCpu": 79.27703067709606 - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "rounds": 3, - "errors": 0, - "rps": 31362.810838194953, - "cpuUs": 33.9193349622862, - "meanMs": 1.5936195091787495, - "p95Ms": 1.908, - "rssMiB": 166.625, - "heapMiB": 15.695716857910156, - "clientCpu": 79.46086152022049 - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "rounds": 3, - "errors": 0, - "rps": 31610.58522398251, - "cpuUs": 33.69195826306914, - "meanMs": 1.5809532960475332, - "p95Ms": 1.899, - "rssMiB": 166.75, - "heapMiB": 15.676223754882812, - "clientCpu": 80.0792646584755 - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 3, - "errors": 0, - "rps": 40776.67242057015, - "cpuUs": 26.430205762662002, - "meanMs": 1.2256893643012379, - "p95Ms": 1.48, - "rssMiB": 114.953125, - "heapMiB": 14.008377075195312, - "clientCpu": 94.909828159584 - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 3, - "errors": 0, - "rps": 40118.623365041, - "cpuUs": 26.9110509443051, - "meanMs": 1.245736625267812, - "p95Ms": 1.449, - "rssMiB": 118.8125, - "heapMiB": 15.533004760742188, - "clientCpu": 94.08034755145313 - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "rounds": 3, - "errors": 0, - "rps": 40261.47098859789, - "cpuUs": 26.718246250206032, - "meanMs": 1.2413366474667598, - "p95Ms": 1.443, - "rssMiB": 118.390625, - "heapMiB": 15.570831298828125, - "clientCpu": 94.27303032634143 - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "rounds": 3, - "errors": 0, - "rps": 40333.18035265429, - "cpuUs": 26.6550675787317, - "meanMs": 1.239196918385037, - "p95Ms": 1.452, - "rssMiB": 118.65625, - "heapMiB": 15.565216064453125, - "clientCpu": 94.25275892588486 - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "rounds": 3, - "errors": 0, - "rps": 40325.35506054461, - "cpuUs": 26.64934841265285, - "meanMs": 1.239323725370821, - "p95Ms": 1.465, - "rssMiB": 118.765625, - "heapMiB": 15.573158264160156, - "clientCpu": 94.2434451930859 - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 3, - "errors": 0, - "rps": 40437.68031478481, - "cpuUs": 26.36769031747732, - "meanMs": 1.2359639740118176, - "p95Ms": 1.433, - "rssMiB": 120.890625, - "heapMiB": 15.594345092773438, - "clientCpu": 94.68737257601792 - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 3, - "errors": 0, - "rps": 36924.90886257948, - "cpuUs": 29.07985346663298, - "meanMs": 1.3534895314270703, - "p95Ms": 1.512, - "rssMiB": 139.828125, - "heapMiB": 17.196517944335938, - "clientCpu": 89.60124260241173 - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "rounds": 3, - "errors": 0, - "rps": 37046.453524295895, - "cpuUs": 29.04311538807447, - "meanMs": 1.3490911543933832, - "p95Ms": 1.539, - "rssMiB": 139.453125, - "heapMiB": 17.269508361816406, - "clientCpu": 89.55848103157393 - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "rounds": 3, - "errors": 0, - "rps": 37109.875103725055, - "cpuUs": 28.93563418597761, - "meanMs": 1.3466948044424754, - "p95Ms": 1.55, - "rssMiB": 140.09375, - "heapMiB": 17.231307983398438, - "clientCpu": 89.59783002904932 - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "rounds": 3, - "errors": 0, - "rps": 37024.38274122101, - "cpuUs": 29.018250047244944, - "meanMs": 1.3498529812010516, - "p95Ms": 1.561, - "rssMiB": 139.484375, - "heapMiB": 17.196250915527344, - "clientCpu": 89.28832671882968 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 3, - "errors": 0, - "rps": 46623.195683076796, - "cpuUs": 22.81820390951649, - "meanMs": 1.071972279112348, - "p95Ms": 1.835, - "rssMiB": 111.1875, - "heapMiB": 11.992713928222656, - "clientCpu": 100.21979390383538 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 3, - "errors": 0, - "rps": 42356.025974832635, - "cpuUs": 25.256094587046988, - "meanMs": 1.1799551979373866, - "p95Ms": 1.455, - "rssMiB": 114.3125, - "heapMiB": 13.747901916503906, - "clientCpu": 96.75812272774402 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "rounds": 3, - "errors": 0, - "rps": 42361.23847691856, - "cpuUs": 25.22669781490396, - "meanMs": 1.179790371655115, - "p95Ms": 1.378, - "rssMiB": 114.109375, - "heapMiB": 13.716453552246094, - "clientCpu": 96.86689978109398 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "rounds": 3, - "errors": 0, - "rps": 42293.46591488464, - "cpuUs": 25.350203657162666, - "meanMs": 1.1817198897809036, - "p95Ms": 1.46, - "rssMiB": 114.625, - "heapMiB": 13.788360595703125, - "clientCpu": 96.74868594974748 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "headers", - "rounds": 3, - "errors": 0, - "rps": 41681.297724265016, - "cpuUs": 31.217825423091988, - "meanMs": 1.1987949939753697, - "p95Ms": 2.108, - "rssMiB": 271.453125, - "heapMiB": 12.205413818359375, - "clientCpu": 93.553789531449 - } - ], - "comparisons": [ - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "versusIsolatedControl": null, - "medianGainPercent": -0.3985069996347179, - "minGainPercent": -0.8715639488479532, - "maxGainPercent": -0.3500282506790908, - "medianCpuUsDelta": 0.1893348331141098, - "medianP95MsDelta": 0.018000000000000016, - "medianRssMiBDelta": -0.046875, - "medianHeapMiBDelta": 0.00176239013671875, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": -0.8715639488479532, - "cpuUsDelta": 0.30731747241160434, - "p95MsDelta": 0.02100000000000013, - "rssMiBDelta": 0.453125, - "heapMiBDelta": 0.00176239013671875 - }, - { - "round": 2, - "throughputPercent": -0.3500282506790908, - "cpuUsDelta": 0.1893348331141098, - "p95MsDelta": -0.010000000000000009, - "rssMiBDelta": -0.046875, - "heapMiBDelta": -0.016082763671875 - }, - { - "round": 3, - "throughputPercent": -0.3985069996347179, - "cpuUsDelta": 0.1665058396707053, - "p95MsDelta": 0.018000000000000016, - "rssMiBDelta": -0.921875, - "heapMiBDelta": 0.01175689697265625 - } - ] - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "versusIsolatedControl": null, - "medianGainPercent": -0.3449269662560206, - "minGainPercent": -0.8073641422034816, - "maxGainPercent": 0.009848569008141794, - "medianCpuUsDelta": 0.11430018676562526, - "medianP95MsDelta": 0.006000000000000005, - "medianRssMiBDelta": 0.078125, - "medianHeapMiBDelta": 0.02092742919921875, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": -0.8073641422034816, - "cpuUsDelta": 0.2899784336315534, - "p95MsDelta": -0.006000000000000005, - "rssMiBDelta": 0.71875, - "heapMiBDelta": 0.02092742919921875 - }, - { - "round": 2, - "throughputPercent": -0.3449269662560206, - "cpuUsDelta": 0.11430018676562526, - "p95MsDelta": 0.020999999999999908, - "rssMiBDelta": 0.015625, - "heapMiBDelta": 0.02245330810546875 - }, - { - "round": 3, - "throughputPercent": 0.009848569008141794, - "cpuUsDelta": -0.017179047785653268, - "p95MsDelta": 0.006000000000000005, - "rssMiBDelta": 0.078125, - "heapMiBDelta": -0.04497528076171875 - } - ] - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "versusIsolatedControl": null, - "medianGainPercent": 0.6065668517817757, - "minGainPercent": -0.03144875464667907, - "maxGainPercent": 1.0542744692490613, - "medianCpuUsDelta": -0.22953385327182474, - "medianP95MsDelta": -0.0029999999999998916, - "medianRssMiBDelta": 0.421875, - "medianHeapMiBDelta": -0.01079559326171875, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": 1.0542744692490613, - "cpuUsDelta": -0.3241673238287177, - "p95MsDelta": 0.0030000000000001137, - "rssMiBDelta": 0.984375, - "heapMiBDelta": -0.01163482666015625 - }, - { - "round": 2, - "throughputPercent": -0.03144875464667907, - "cpuUsDelta": 0.07518591238183348, - "p95MsDelta": -0.03400000000000003, - "rssMiBDelta": -0.328125, - "heapMiBDelta": 0.0668182373046875 - }, - { - "round": 3, - "throughputPercent": 0.6065668517817757, - "cpuUsDelta": -0.22953385327182474, - "p95MsDelta": -0.0029999999999998916, - "rssMiBDelta": 0.421875, - "heapMiBDelta": -0.01079559326171875 - } - ] - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "versusIsolatedControl": null, - "medianGainPercent": 0.3560631237445877, - "minGainPercent": -0.7346183270806272, - "maxGainPercent": 0.8987908969923408, - "medianCpuUsDelta": -0.19351845567631898, - "medianP95MsDelta": -0.006000000000000005, - "medianRssMiBDelta": -0.421875, - "medianHeapMiBDelta": 0.0387725830078125, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": 0.8987908969923408, - "cpuUsDelta": -0.19351845567631898, - "p95MsDelta": -0.139, - "rssMiBDelta": -0.421875, - "heapMiBDelta": 0.0432891845703125 - }, - { - "round": 2, - "throughputPercent": 0.3560631237445877, - "cpuUsDelta": -0.26547105784930025, - "p95MsDelta": 0.026000000000000023, - "rssMiBDelta": 0.046875, - "heapMiBDelta": -0.03350830078125 - }, - { - "round": 3, - "throughputPercent": -0.7346183270806272, - "cpuUsDelta": 0.17442346975206036, - "p95MsDelta": -0.006000000000000005, - "rssMiBDelta": -0.640625, - "heapMiBDelta": 0.0387725830078125 - } - ] - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "versusIsolatedControl": null, - "medianGainPercent": 0.6568885570824579, - "minGainPercent": -1.6466441937076581, - "maxGainPercent": 0.707553936798333, - "medianCpuUsDelta": -0.25669712715065174, - "medianP95MsDelta": 0.0029999999999998916, - "medianRssMiBDelta": -0.296875, - "medianHeapMiBDelta": 0.0270233154296875, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": 0.6568885570824579, - "cpuUsDelta": -0.25669712715065174, - "p95MsDelta": -0.1260000000000001, - "rssMiBDelta": -0.390625, - "heapMiBDelta": 0.05682373046875 - }, - { - "round": 2, - "throughputPercent": 0.707553936798333, - "cpuUsDelta": -0.3021881907978532, - "p95MsDelta": 0.0029999999999998916, - "rssMiBDelta": 0.390625, - "heapMiBDelta": 0.0043792724609375 - }, - { - "round": 3, - "throughputPercent": -1.6466441937076581, - "cpuUsDelta": 0.46945216351758745, - "p95MsDelta": 0.030999999999999917, - "rssMiBDelta": -0.296875, - "heapMiBDelta": 0.0270233154296875 - } - ] - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "versusIsolatedControl": null, - "medianGainPercent": 0.6142741836117294, - "minGainPercent": 0.1585753509941501, - "maxGainPercent": 0.6373594857589371, - "medianCpuUsDelta": -0.1381480287855119, - "medianP95MsDelta": 0, - "medianRssMiBDelta": 0, - "medianHeapMiBDelta": 0.02266693115234375, - "allRoundsPositive": true, - "pairs": [ - { - "round": 1, - "throughputPercent": 0.6373594857589371, - "cpuUsDelta": -0.26650959330230606, - "p95MsDelta": -0.10299999999999998, - "rssMiBDelta": -0.046875, - "heapMiBDelta": 0.02266693115234375 - }, - { - "round": 2, - "throughputPercent": 0.1585753509941501, - "cpuUsDelta": -0.1381480287855119, - "p95MsDelta": 0.038999999999999924, - "rssMiBDelta": 0.109375, - "heapMiBDelta": 0.01232147216796875 - }, - { - "round": 3, - "throughputPercent": 0.6142741836117294, - "cpuUsDelta": -0.03395879091180021, - "p95MsDelta": 0, - "rssMiBDelta": 0, - "heapMiBDelta": 0.0967254638671875 - } - ] - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "hoist", - "versusIsolatedControl": null, - "medianGainPercent": 0.24659856827360382, - "minGainPercent": -0.3224990321319954, - "maxGainPercent": 0.8744862419076904, - "medianCpuUsDelta": -0.002287125222256492, - "medianP95MsDelta": 0.026000000000000023, - "medianRssMiBDelta": -0.375, - "medianHeapMiBDelta": 0.0749664306640625, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": 0.24659856827360382, - "cpuUsDelta": -0.002287125222256492, - "p95MsDelta": 0.026000000000000023, - "rssMiBDelta": -0.890625, - "heapMiBDelta": 0.0749664306640625 - }, - { - "round": 2, - "throughputPercent": -0.3224990321319954, - "cpuUsDelta": 0.2534105076642419, - "p95MsDelta": 0.03699999999999992, - "rssMiBDelta": 1.53125, - "heapMiBDelta": 0.02350616455078125 - }, - { - "round": 3, - "throughputPercent": 0.8744862419076904, - "cpuUsDelta": -0.20829482974746938, - "p95MsDelta": 0.006000000000000005, - "rssMiBDelta": -0.375, - "heapMiBDelta": 0.07904815673828125 - } - ] - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "versusIsolatedControl": null, - "medianGainPercent": -0.13065465323736092, - "minGainPercent": -0.15185639448280774, - "maxGainPercent": 1.7280002882141599, - "medianCpuUsDelta": -0.05019987694035777, - "medianP95MsDelta": 0.038999999999999924, - "medianRssMiBDelta": 0.3125, - "medianHeapMiBDelta": 0.02458953857421875, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": -0.13065465323736092, - "cpuUsDelta": -0.05019987694035777, - "p95MsDelta": 0.038999999999999924, - "rssMiBDelta": 0.3125, - "heapMiBDelta": 0.0088653564453125 - }, - { - "round": 2, - "throughputPercent": -0.15185639448280774, - "cpuUsDelta": 0.14592930556738182, - "p95MsDelta": 0.05699999999999994, - "rssMiBDelta": 1.21875, - "heapMiBDelta": 0.02458953857421875 - }, - { - "round": 3, - "throughputPercent": 1.7280002882141599, - "cpuUsDelta": -0.4578469718845355, - "p95MsDelta": 0.017000000000000126, - "rssMiBDelta": 0.265625, - "heapMiBDelta": 0.07723236083984375 - } - ] - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "versusIsolatedControl": null, - "medianGainPercent": 0.09769287957988038, - "minGainPercent": -0.3676083958715104, - "maxGainPercent": 0.2693950552775437, - "medianCpuUsDelta": -0.023621457954721592, - "medianP95MsDelta": 0.04100000000000015, - "medianRssMiBDelta": 0.84375, - "medianHeapMiBDelta": -0.010467529296875, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": 0.2693950552775437, - "cpuUsDelta": -0.06160341938803526, - "p95MsDelta": 0.03400000000000003, - "rssMiBDelta": -0.53125, - "heapMiBDelta": -0.01631927490234375 - }, - { - "round": 2, - "throughputPercent": -0.3676083958715104, - "cpuUsDelta": 0.17129026085304488, - "p95MsDelta": 0.04899999999999993, - "rssMiBDelta": 0.84375, - "heapMiBDelta": -0.010467529296875 - }, - { - "round": 3, - "throughputPercent": 0.09769287957988038, - "cpuUsDelta": -0.023621457954721592, - "p95MsDelta": 0.04100000000000015, - "rssMiBDelta": 1.03125, - "heapMiBDelta": 0.01796722412109375 - } - ] - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "assign", - "versusIsolatedControl": null, - "medianGainPercent": 0.15753035633294665, - "minGainPercent": -0.27493727372802645, - "maxGainPercent": 0.3471123566789913, - "medianCpuUsDelta": -0.09629301339098717, - "medianP95MsDelta": -0.03300000000000014, - "medianRssMiBDelta": -0.203125, - "medianHeapMiBDelta": -0.04505157470703125, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": 0.15753035633294665, - "cpuUsDelta": -0.10448994355588681, - "p95MsDelta": -0.08800000000000008, - "rssMiBDelta": -0.4375, - "heapMiBDelta": 0.07395172119140625 - }, - { - "round": 2, - "throughputPercent": -0.27493727372802645, - "cpuUsDelta": 0.127710141611594, - "p95MsDelta": -0.03300000000000014, - "rssMiBDelta": -0.203125, - "heapMiBDelta": -0.04505157470703125 - }, - { - "round": 3, - "throughputPercent": 0.3471123566789913, - "cpuUsDelta": -0.09629301339098717, - "p95MsDelta": 0.14700000000000002, - "rssMiBDelta": 0.4375, - "heapMiBDelta": -0.07346343994140625 - } - ] - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "sync", - "versusIsolatedControl": null, - "medianGainPercent": -0.1776709933091869, - "minGainPercent": -0.2695390381548979, - "maxGainPercent": 0.3958663251262484, - "medianCpuUsDelta": 0.12908335955327033, - "medianP95MsDelta": 0.02200000000000002, - "medianRssMiBDelta": 0.171875, - "medianHeapMiBDelta": 0.00580596923828125, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": -0.1776709933091869, - "cpuUsDelta": 0.12908335955327033, - "p95MsDelta": -0.006000000000000005, - "rssMiBDelta": 0.171875, - "heapMiBDelta": 0.00580596923828125 - }, - { - "round": 2, - "throughputPercent": -0.2695390381548979, - "cpuUsDelta": 0.16420684720596057, - "p95MsDelta": 0.04899999999999993, - "rssMiBDelta": 0.140625, - "heapMiBDelta": 0.0626983642578125 - }, - { - "round": 3, - "throughputPercent": 0.3958663251262484, - "cpuUsDelta": -0.12755400836916664, - "p95MsDelta": 0.02200000000000002, - "rssMiBDelta": 0.953125, - "heapMiBDelta": -0.001556396484375 - } - ] - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "headers", - "versusIsolatedControl": null, - "medianGainPercent": -1.2635603610128499, - "minGainPercent": -1.7178726698741875, - "maxGainPercent": -0.9960045355023817, - "medianCpuUsDelta": 5.8948345947970395, - "medianP95MsDelta": 0.661, - "medianRssMiBDelta": 157, - "medianHeapMiBDelta": -1.5581817626953125, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": -0.9960045355023817, - "cpuUsDelta": 5.830074222450335, - "p95MsDelta": 0.637, - "rssMiBDelta": 157, - "heapMiBDelta": -1.4940643310546875 - }, - { - "round": 2, - "throughputPercent": -1.7178726698741875, - "cpuUsDelta": 6.13543632734833, - "p95MsDelta": 0.6970000000000001, - "rssMiBDelta": 155.703125, - "heapMiBDelta": -1.5581817626953125 - }, - { - "round": 3, - "throughputPercent": -1.2635603610128499, - "cpuUsDelta": 5.8948345947970395, - "p95MsDelta": 0.661, - "rssMiBDelta": 160.625, - "heapMiBDelta": -1.584503173828125 - } - ] - } - ] - }, - { - "input": "benchmarks/results/experiments/screen-reply.json", - "raw": { - "startedAt": "2026-10-27T16:18:25.113Z", - "commit": "cf3e4f83ecc7c366304ed47e6c00c43cdc40b5c1", - "harnessSha256": { - "fixture.mjs": "064fd8eb68b46d1b567bbea84b7655948def3687c5f9e68438c1bfdc511259e1", - "load.mjs": "ce51b4f707385179b4c69bfda7babe2534083005280e9819ddd207f97dafda5a", - "server.mjs": "d3d963157c8aeed9b1662a8bb4c33a49c6e1c555375b45981e80a43a9d18e72e", - "run.mjs": "0330171024592b77ca41a4779cefa8fd68ffa71478d284d380d70ebc4af4b3e4" - }, - "environment": { - "node": "v24.22.1", - "os": "Darwin 27.2.0 arm64", - "platform": "darwin", - "cpu": "Apple M2", - "logicalCpus": 8, - "availableParallelism": 8, - "systemMemoryBytes": 17179869184, - "cpuMax": null, - "memoryMax": null, - "versions": { - "erest": "3.4.0", - "packages/erest-express/": "3.4.0", - "packages/erest-koa/": "3.4.0", - "packages/erest-leizmweb/": "3.4.0", - "node_modules/express/": "5.2.1", - "node_modules/koa/": "3.0.0", - "node_modules/koa-router/": "13.1.1", - "node_modules/koa-bodyparser/": "4.4.1", - "node_modules/@leizm/web/": "2.7.3", - "node_modules/zod/": "4.4.3", - "packages/erest-h3/": "3.4.0", - "node_modules/h3/": "2.0.8" - } - }, - "config": { - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "scenarios": [ - "post" - ], - "concurrency": [ - 50 - ], - "rounds": 3, - "durationMs": 3000, - "warmupMs": 2000, - "serverCpu": null - }, - "experiments": { - "commit": "cf3e4f83ecc7c366304ed47e6c00c43cdc40b5c1", - "prepareSha256": "166b0a71c3e9a81ebb79b7d9f48758d9c688d1c3f21f6d631c39de90c886da59", - "baseline": { - "dist/lib/api.js": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "dist/lib/adapters/utils.js": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "dist/lib/params.js": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "packages/erest-express/dist/index.js": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "packages/erest-koa/dist/index.js": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "packages/erest-leizmweb/dist/index.js": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "packages/erest-h3/dist/index.js": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0" - }, - "variants": { - "node-headers": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/node-headers", - "frameworks": [ - "h3" - ], - "patches": [ - "node-headers" - ], - "descriptions": [ - "Node-only diagnostic: copy IncomingMessage headers instead of converting Web Headers." - ], - "caveats": [ - "Not portable; raw array/duplicate-header normalization and mutations to Web Headers can differ. This is an attribution experiment, not a shippable replacement." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "6c8fc2556f842b23d4575f40c5c7ae686ff180e2c6232a2ffca18d2c582baf5c" - } - } - }, - "reply": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/reply", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [ - "reply" - ], - "descriptions": [ - "Use per-request Reply instances with shared prototype methods instead of four per-request method closures." - ], - "caveats": [ - "Prototype/enumerability and detached method calls differ. Requires a compatibility decision and broad Reply tests before shipping." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "d429ffa67ffa89ac2c2fe8caf785170b236ea74f88930b5ef31333f5786ce454" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "65ed901e1f72f8a9ac1060b736aa82d3bd86b7a5b5c227b691faa8c12093b134" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "00a0977f107947a232e0b457b1e3c0bdcebd2b3275ce6db19defded74ae833ef" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "6ae2c3b82c298fb7ac9cc9b0784f7aa2b4cb5dc2b86a750b2ab2dd2d42e16bd4" - } - } - }, - "hoist": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/hoist", - "frameworks": [ - "express", - "koa", - "leizmweb" - ], - "patches": [ - "hoist" - ], - "descriptions": [ - "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly." - ], - "caveats": [ - "Must retain existing hook binding semantics and all layered/requiredOneOf behavior." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "5e738ee1b62fee37841aa7a176fba29d64ec8bcf84ae7b875c153470177626d3" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "15cc07b414ac5d4393170ce4cc5fd3ce8adfee1abdb6e417b579dc105c0a9bee" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "a6b044ae94621d9d237613bcaf89c0ba3ab5e0289aa6ef695887c6168a8082f9" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" - } - } - }, - "assign": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/assign", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [ - "assign" - ], - "descriptions": [ - "Replace four object spreads for flat params with Object.assign." - ], - "caveats": [ - "Diagnostic only: Object.assign treats an own __proto__ key differently; not safe to ship unchanged." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "f3537bce8dfaf13e39757a1a43428466f8d4a50fc3cd83ab2e85c3ba29f7cf86" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "f42d3219cd2f04c72167bddb5c96a9e442860d4bbca0173d465386dc293dca48" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "72e2f5ae67dc2f7afb42032c8628ca9e61eea2f9e8ff21a2296ffe18a2a8ce58" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "f2a0e652e0405aaa9b1e23d2715b39c07d638b2853971c69aa7c1ab1c4d86780" - } - } - }, - "sync": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/sync", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [ - "sync" - ], - "descriptions": [ - "Avoid unconditional async typed-handler wrapper; resolve async results via a shared finish callback." - ], - "caveats": [ - "Check rejection, response schemas, envelope return bookkeeping and async onion middleware before shipping." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "d5aebe36f501e7b13f787340b16746bc335ec5106d1caa7bfde605a483ef7bd0" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" - } - } - }, - "headers": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/headers", - "frameworks": [ - "h3" - ], - "patches": [ - "headers" - ], - "descriptions": [ - "Lazily materialize H3 ctx.headers on first access, cache the object and keep a setter." - ], - "caveats": [ - "Header snapshot timing/property descriptors differ; reject as a drop-in optimization without an API decision." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "00e65ed2af97fe50a1937ca1ef49645a9911b57839bfe9ed400468d2655d8b78" - } - } - } - } - }, - "selectedVariants": [ - "reply", - "node-headers" - ], - "samples": [ - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 101758, - "errors": 0, - "elapsedMs": 3001.353083, - "rps": 33904.0416725272, - "latencyMs": { - "mean": 1.4740323158375657, - "p50": 1.403, - "p95": 1.878, - "p99": 2.838, - "max": 6.837540999999874 - }, - "clientCpuPercent": 89.91964375289064, - "serverCpuPercent": 106.7073886174675, - "serverCpuUsPerRequest": 31.48169185715128, - "serverRssMiB": 121.359375, - "serverRetainedHeapMiB": 13.987510681152344, - "idleRssMiB": 81.984375, - "server": { - "type": "stats", - "elapsedMs": 3002.14825, - "cpu": { - "user": 2701973, - "system": 501541 - }, - "memory": { - "rss": 127254528, - "heapTotal": 38633472, - "heapUsed": 20493408, - "external": 4340633, - "arrayBuffers": 450378 - }, - "retainedMemory": { - "rss": 127516672, - "heapTotal": 34701312, - "heapUsed": 14666968, - "external": 4340633, - "arrayBuffers": 277690 - }, - "maxRssKiB": 124528 - }, - "idleMemory": { - "rss": 85966848, - "heapTotal": 31293440, - "heapUsed": 12373352, - "external": 4167902, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 95626, - "errors": 0, - "elapsedMs": 3001.5476659999995, - "rps": 31858.89768908305, - "latencyMs": { - "mean": 1.5687296158053294, - "p50": 1.504, - "p95": 1.884, - "p99": 3.014, - "max": 6.872166999999536 - }, - "clientCpuPercent": 79.54676272663933, - "serverCpuPercent": 106.45863798434789, - "serverCpuUsPerRequest": 33.430698763934494, - "serverRssMiB": 166.375, - "serverRetainedHeapMiB": 15.7164306640625, - "idleRssMiB": 85.8125, - "server": { - "type": "stats", - "elapsedMs": 3002.897708, - "cpu": { - "user": 2704761, - "system": 492083 - }, - "memory": { - "rss": 174456832, - "heapTotal": 92372992, - "heapUsed": 41266632, - "external": 4483322, - "arrayBuffers": 515131 - }, - "retainedMemory": { - "rss": 174489600, - "heapTotal": 91062272, - "heapUsed": 16479872, - "external": 4483322, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170400 - }, - "idleMemory": { - "rss": 89980928, - "heapTotal": 33652736, - "heapUsed": 14022104, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 1, - "requests": 94974, - "errors": 0, - "elapsedMs": 3001.4867919999997, - "rps": 31642.318151503634, - "latencyMs": { - "mean": 1.5794838748394002, - "p50": 1.516, - "p95": 1.912, - "p99": 3.034, - "max": 6.5836249999993015 - }, - "clientCpuPercent": 79.33301610210785, - "serverCpuPercent": 106.41599573939047, - "serverCpuUsPerRequest": 33.64487122791501, - "serverRssMiB": 167.015625, - "serverRetainedHeapMiB": 15.688346862792969, - "idleRssMiB": 85.453125, - "server": { - "type": "stats", - "elapsedMs": 3002.732792, - "cpu": { - "user": 2701663, - "system": 493725 - }, - "memory": { - "rss": 175128576, - "heapTotal": 92635136, - "heapUsed": 41946856, - "external": 4552742, - "arrayBuffers": 586923 - }, - "retainedMemory": { - "rss": 175177728, - "heapTotal": 90275840, - "heapUsed": 16450424, - "external": 4552742, - "arrayBuffers": 277690 - }, - "maxRssKiB": 171072 - }, - "idleMemory": { - "rss": 89604096, - "heapTotal": 33390592, - "heapUsed": 14026248, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 125794, - "errors": 0, - "elapsedMs": 3001.160582999997, - "rps": 41915.11800886535, - "latencyMs": { - "mean": 1.1924132269981422, - "p50": 1.133, - "p95": 1.435, - "p99": 2.306, - "max": 6.011500000000524 - }, - "clientCpuPercent": 96.04734302882862, - "serverCpuPercent": 107.42800073318071, - "serverCpuUsPerRequest": 25.63668378460022, - "serverRssMiB": 114.8125, - "serverRetainedHeapMiB": 13.949111938476562, - "idleRssMiB": 81.796875, - "server": { - "type": "stats", - "elapsedMs": 3001.955708, - "cpu": { - "user": 2648609, - "system": 576332 - }, - "memory": { - "rss": 120389632, - "heapTotal": 34177024, - "heapUsed": 20648448, - "external": 4215169, - "arrayBuffers": 307899 - }, - "retainedMemory": { - "rss": 120422400, - "heapTotal": 34177024, - "heapUsed": 14626704, - "external": 4215169, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117600 - }, - "idleMemory": { - "rss": 85770240, - "heapTotal": 31555584, - "heapUsed": 12366496, - "external": 4184917, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 122425, - "errors": 0, - "elapsedMs": 3001.1968339999985, - "rps": 40792.05955873005, - "latencyMs": { - "mean": 1.2251699432305498, - "p50": 1.165, - "p95": 1.436, - "p99": 2.356, - "max": 5.859208000001672 - }, - "clientCpuPercent": 94.65603747868013, - "serverCpuPercent": 107.55689307943253, - "serverCpuUsPerRequest": 26.37426179293445, - "serverRssMiB": 118.96875, - "serverRetainedHeapMiB": 15.526176452636719, - "idleRssMiB": 86.5, - "server": { - "type": "stats", - "elapsedMs": 3002.010292, - "cpu": { - "user": 2655188, - "system": 573681 - }, - "memory": { - "rss": 124747776, - "heapTotal": 36012032, - "heapUsed": 18999600, - "external": 4253922, - "arrayBuffers": 285731 - }, - "retainedMemory": { - "rss": 124764160, - "heapTotal": 36012032, - "heapUsed": 16280376, - "external": 4253922, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121840 - }, - "idleMemory": { - "rss": 90701824, - "heapTotal": 32866304, - "heapUsed": 13960544, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 1, - "requests": 123529, - "errors": 0, - "elapsedMs": 3001.1547500000015, - "rps": 41160.48997473387, - "latencyMs": { - "mean": 1.2142085592856777, - "p50": 1.156, - "p95": 1.431, - "p99": 2.345, - "max": 6.44354100000055 - }, - "clientCpuPercent": 94.75889238967096, - "serverCpuPercent": 107.85105602652848, - "serverCpuUsPerRequest": 26.20823450363882, - "serverRssMiB": 118.796875, - "serverRetainedHeapMiB": 15.635826110839844, - "idleRssMiB": 86.6875, - "server": { - "type": "stats", - "elapsedMs": 3001.8037090000003, - "cpu": { - "user": 2670790, - "system": 566687 - }, - "memory": { - "rss": 124567552, - "heapTotal": 36012032, - "heapUsed": 17643408, - "external": 4243526, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 124567552, - "heapTotal": 36012032, - "heapUsed": 16395352, - "external": 4243526, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121648 - }, - "idleMemory": { - "rss": 90898432, - "heapTotal": 33128448, - "heapUsed": 13965264, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 124209, - "errors": 0, - "elapsedMs": 3001.2063749999943, - "rps": 41386.357510985974, - "latencyMs": { - "mean": 1.2075836249305614, - "p50": 1.145, - "p95": 1.399, - "p99": 2.324, - "max": 5.109415999999328 - }, - "clientCpuPercent": 95.73606880000065, - "serverCpuPercent": 106.17241440987387, - "serverCpuUsPerRequest": 25.65988776980734, - "serverRssMiB": 120.53125, - "serverRetainedHeapMiB": 15.610618591308594, - "idleRssMiB": 84.484375, - "server": { - "type": "stats", - "elapsedMs": 3001.8993330000003, - "cpu": { - "user": 2617499, - "system": 569690 - }, - "memory": { - "rss": 126386176, - "heapTotal": 38912000, - "heapUsed": 24585224, - "external": 4232464, - "arrayBuffers": 301915 - }, - "retainedMemory": { - "rss": 126418944, - "heapTotal": 38387712, - "heapUsed": 16368920, - "external": 4232464, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123456 - }, - "idleMemory": { - "rss": 88588288, - "heapTotal": 33931264, - "heapUsed": 14168496, - "external": 4208196, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 112270, - "errors": 0, - "elapsedMs": 3001.267249999997, - "rps": 37407.53176845551, - "latencyMs": { - "mean": 1.3359732180724961, - "p50": 1.277, - "p95": 1.517, - "p99": 2.585, - "max": 7.6258749999979045 - }, - "clientCpuPercent": 90.2693020756483, - "serverCpuPercent": 107.23179108848429, - "serverCpuUsPerRequest": 28.67299367595974, - "serverRssMiB": 139.015625, - "serverRetainedHeapMiB": 17.23480987548828, - "idleRssMiB": 88.46875, - "server": { - "type": "stats", - "elapsedMs": 3002.0173750000004, - "cpu": { - "user": 2653499, - "system": 565618 - }, - "memory": { - "rss": 145768448, - "heapTotal": 57786368, - "heapUsed": 23086736, - "external": 4341496, - "arrayBuffers": 350026 - }, - "retainedMemory": { - "rss": 145784832, - "heapTotal": 56999936, - "heapUsed": 18072008, - "external": 4341496, - "arrayBuffers": 343226 - }, - "maxRssKiB": 142368 - }, - "idleMemory": { - "rss": 92766208, - "heapTotal": 34979840, - "heapUsed": 15782264, - "external": 4400189, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 1, - "requests": 112122, - "errors": 0, - "elapsedMs": 3001.2731249999997, - "rps": 37358.14613673323, - "latencyMs": { - "mean": 1.3378279333761678, - "p50": 1.278, - "p95": 1.556, - "p99": 2.575, - "max": 5.757916999995359 - }, - "clientCpuPercent": 90.17239975452085, - "serverCpuPercent": 107.26373122564547, - "serverCpuUsPerRequest": 28.719671429335904, - "serverRssMiB": 139.171875, - "serverRetainedHeapMiB": 17.182777404785156, - "idleRssMiB": 88.40625, - "server": { - "type": "stats", - "elapsedMs": 3002.046417, - "cpu": { - "user": 2647907, - "system": 572200 - }, - "memory": { - "rss": 145932288, - "heapTotal": 57262080, - "heapUsed": 33141336, - "external": 4409844, - "arrayBuffers": 420746 - }, - "retainedMemory": { - "rss": 145965056, - "heapTotal": 56999936, - "heapUsed": 18017448, - "external": 4409844, - "arrayBuffers": 355473 - }, - "maxRssKiB": 142544 - }, - "idleMemory": { - "rss": 92700672, - "heapTotal": 35241984, - "heapUsed": 15782352, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 141328, - "errors": 0, - "elapsedMs": 3000.932415999996, - "rps": 47094.69605062915, - "latencyMs": { - "mean": 1.061281811226363, - "p50": 0.947, - "p95": 1.85, - "p99": 1.989, - "max": 4.963457999998354 - }, - "clientCpuPercent": 100.27043541389784, - "serverCpuPercent": 106.3919008963715, - "serverCpuUsPerRequest": 22.595862108004077, - "serverRssMiB": 111.125, - "serverRetainedHeapMiB": 12.046852111816406, - "idleRssMiB": 75, - "server": { - "type": "stats", - "elapsedMs": 3001.5705829999997, - "cpu": { - "user": 2480753, - "system": 712675 - }, - "memory": { - "rss": 116523008, - "heapTotal": 31735808, - "heapUsed": 13654528, - "external": 4178473, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 116555776, - "heapTotal": 31735808, - "heapUsed": 12632040, - "external": 4178473, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113824 - }, - "idleMemory": { - "rss": 78643200, - "heapTotal": 20987904, - "heapUsed": 10640000, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 130161, - "errors": 0, - "elapsedMs": 3001.158083000002, - "rps": 43370.25788054761, - "latencyMs": { - "mean": 1.152333824640259, - "p50": 1.091, - "p95": 1.421, - "p99": 2.231, - "max": 6.678874999997788 - }, - "clientCpuPercent": 97.82883536295205, - "serverCpuPercent": 106.88521964051118, - "serverCpuUsPerRequest": 24.650963038083603, - "serverRssMiB": 113.890625, - "serverRetainedHeapMiB": 13.704490661621094, - "idleRssMiB": 80.546875, - "server": { - "type": "stats", - "elapsedMs": 3001.9061669999996, - "cpu": { - "user": 2592410, - "system": 616184 - }, - "memory": { - "rss": 119422976, - "heapTotal": 34095104, - "heapUsed": 19664384, - "external": 4295235, - "arrayBuffers": 303765 - }, - "retainedMemory": { - "rss": 119422976, - "heapTotal": 34095104, - "heapUsed": 14370200, - "external": 4295235, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116624 - }, - "idleMemory": { - "rss": 84459520, - "heapTotal": 31473664, - "heapUsed": 12359008, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 1, - "requests": 130080, - "errors": 0, - "elapsedMs": 3001.116374999998, - "rps": 43343.870662129884, - "latencyMs": { - "mean": 1.1530165504689613, - "p50": 1.092, - "p95": 1.463, - "p99": 2.245, - "max": 9.753624999997555 - }, - "clientCpuPercent": 97.75805511707297, - "serverCpuPercent": 106.91098290912004, - "serverCpuUsPerRequest": 24.67214790897909, - "serverRssMiB": 114.765625, - "serverRetainedHeapMiB": 13.697860717773438, - "idleRssMiB": 80.6875, - "server": { - "type": "stats", - "elapsedMs": 3001.8927079999994, - "cpu": { - "user": 2588467, - "system": 620886 - }, - "memory": { - "rss": 120340480, - "heapTotal": 34881536, - "heapUsed": 21217792, - "external": 4303441, - "arrayBuffers": 314343 - }, - "retainedMemory": { - "rss": 120373248, - "heapTotal": 34095104, - "heapUsed": 14363248, - "external": 4303441, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117552 - }, - "idleMemory": { - "rss": 84606976, - "heapTotal": 30949376, - "heapUsed": 12365456, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 1, - "requests": 138192, - "errors": 0, - "elapsedMs": 3001.0239160000056, - "rps": 46048.28347525896, - "latencyMs": { - "mean": 1.0853443055386283, - "p50": 1.002, - "p95": 1.956, - "p99": 2.126, - "max": 6.1131250000034925 - }, - "clientCpuPercent": 99.89517191171876, - "serverCpuPercent": 106.68758692514103, - "serverCpuUsPerRequest": 23.174358863031145, - "serverRssMiB": 115.296875, - "serverRetainedHeapMiB": 13.6630859375, - "idleRssMiB": 80.96875, - "server": { - "type": "stats", - "elapsedMs": 3001.765334, - "cpu": { - "user": 2507659, - "system": 694852 - }, - "memory": { - "rss": 120897536, - "heapTotal": 33832960, - "heapUsed": 18730512, - "external": 4289509, - "arrayBuffers": 300411 - }, - "retainedMemory": { - "rss": 120897536, - "heapTotal": 33832960, - "heapUsed": 14326784, - "external": 4289509, - "arrayBuffers": 277690 - }, - "maxRssKiB": 118064 - }, - "idleMemory": { - "rss": 84901888, - "heapTotal": 31211520, - "heapUsed": 12361232, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 122918, - "errors": 0, - "elapsedMs": 3001.166041999997, - "rps": 40956.74757071642, - "latencyMs": { - "mean": 1.2203168658048573, - "p50": 1.158, - "p95": 1.456, - "p99": 2.337, - "max": 6.41895900000236 - }, - "clientCpuPercent": 95.04269207641536, - "serverCpuPercent": 107.95620943102692, - "serverCpuUsPerRequest": 26.365455018793018, - "serverRssMiB": 118.78125, - "serverRetainedHeapMiB": 15.557518005371094, - "idleRssMiB": 86.453125, - "server": { - "type": "stats", - "elapsedMs": 3001.94775, - "cpu": { - "user": 2663475, - "system": 577314 - }, - "memory": { - "rss": 124551168, - "heapTotal": 36012032, - "heapUsed": 20640520, - "external": 4262898, - "arrayBuffers": 294707 - }, - "retainedMemory": { - "rss": 124583936, - "heapTotal": 36012032, - "heapUsed": 16313240, - "external": 4262898, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121664 - }, - "idleMemory": { - "rss": 90652672, - "heapTotal": 32866304, - "heapUsed": 13961008, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 2, - "requests": 123214, - "errors": 0, - "elapsedMs": 3001.1958749999903, - "rps": 41054.96779679547, - "latencyMs": { - "mean": 1.2173162738568768, - "p50": 1.155, - "p95": 1.456, - "p99": 2.353, - "max": 8.599667000002228 - }, - "clientCpuPercent": 95.02385444935376, - "serverCpuPercent": 108.01347452204254, - "serverCpuUsPerRequest": 26.314866817082475, - "serverRssMiB": 118.796875, - "serverRetainedHeapMiB": 15.626991271972656, - "idleRssMiB": 86.59375, - "server": { - "type": "stats", - "elapsedMs": 3001.8106669999997, - "cpu": { - "user": 2659285, - "system": 583075 - }, - "memory": { - "rss": 124567552, - "heapTotal": 36012032, - "heapUsed": 21566368, - "external": 4266238, - "arrayBuffers": 300419 - }, - "retainedMemory": { - "rss": 124567552, - "heapTotal": 36012032, - "heapUsed": 16386088, - "external": 4266238, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121648 - }, - "idleMemory": { - "rss": 90800128, - "heapTotal": 33128448, - "heapUsed": 13965960, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 126054, - "errors": 0, - "elapsedMs": 3001.141791999995, - "rps": 42002.014145421694, - "latencyMs": { - "mean": 1.1898854058022599, - "p50": 1.133, - "p95": 1.491, - "p99": 2.3, - "max": 5.512708000009297 - }, - "clientCpuPercent": 96.28885271942542, - "serverCpuPercent": 107.37532568060682, - "serverCpuUsPerRequest": 25.57026353784886, - "serverRssMiB": 115.1875, - "serverRetainedHeapMiB": 13.993972778320312, - "idleRssMiB": 81.71875, - "server": { - "type": "stats", - "elapsedMs": 3001.8386250000003, - "cpu": { - "user": 2631313, - "system": 591921 - }, - "memory": { - "rss": 120782848, - "heapTotal": 34177024, - "heapUsed": 17970176, - "external": 4197897, - "arrayBuffers": 290627 - }, - "retainedMemory": { - "rss": 120799232, - "heapTotal": 34177024, - "heapUsed": 14673744, - "external": 4197897, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117968 - }, - "idleMemory": { - "rss": 85688320, - "heapTotal": 31555584, - "heapUsed": 12366608, - "external": 4184917, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 112814, - "errors": 0, - "elapsedMs": 3001.2526249999937, - "rps": 37588.97170477285, - "latencyMs": { - "mean": 1.3295399233251566, - "p50": 1.272, - "p95": 1.518, - "p99": 2.573, - "max": 9.777792000008048 - }, - "clientCpuPercent": 90.1498919971792, - "serverCpuPercent": 107.27611059363657, - "serverCpuUsPerRequest": 28.546607690534863, - "serverRssMiB": 140.421875, - "serverRetainedHeapMiB": 17.186782836914062, - "idleRssMiB": 88.5, - "server": { - "type": "stats", - "elapsedMs": 3002.0262499999994, - "cpu": { - "user": 2640263, - "system": 580194 - }, - "memory": { - "rss": 147243008, - "heapTotal": 58834944, - "heapUsed": 32293048, - "external": 4402839, - "arrayBuffers": 411369 - }, - "retainedMemory": { - "rss": 147259392, - "heapTotal": 58572800, - "heapUsed": 18021648, - "external": 4402839, - "arrayBuffers": 346497 - }, - "maxRssKiB": 143808 - }, - "idleMemory": { - "rss": 92798976, - "heapTotal": 34979840, - "heapUsed": 15777672, - "external": 4400189, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 2, - "requests": 112729, - "errors": 0, - "elapsedMs": 3001.259082999997, - "rps": 37560.569375209816, - "latencyMs": { - "mean": 1.3306319674351803, - "p50": 1.27, - "p95": 1.519, - "p99": 2.589, - "max": 8.290416999996523 - }, - "clientCpuPercent": 90.12557480696519, - "serverCpuPercent": 107.29615224351176, - "serverCpuUsPerRequest": 28.572780739649957, - "serverRssMiB": 138.890625, - "serverRetainedHeapMiB": 17.20008087158203, - "idleRssMiB": 88.25, - "server": { - "type": "stats", - "elapsedMs": 3001.9538749999997, - "cpu": { - "user": 2641504, - "system": 579477 - }, - "memory": { - "rss": 145637376, - "heapTotal": 56999936, - "heapUsed": 34317816, - "external": 4421812, - "arrayBuffers": 432714 - }, - "retainedMemory": { - "rss": 145653760, - "heapTotal": 56999936, - "heapUsed": 18035592, - "external": 4421812, - "arrayBuffers": 358186 - }, - "maxRssKiB": 142240 - }, - "idleMemory": { - "rss": 92536832, - "heapTotal": 35241984, - "heapUsed": 15781792, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 124519, - "errors": 0, - "elapsedMs": 3001.1872920000023, - "rps": 41489.91311935753, - "latencyMs": { - "mean": 1.204572934981812, - "p50": 1.146, - "p95": 1.401, - "p99": 2.331, - "max": 6.041708999997354 - }, - "clientCpuPercent": 95.53772294195086, - "serverCpuPercent": 106.37598073234834, - "serverCpuUsPerRequest": 25.644134630056456, - "serverRssMiB": 120.828125, - "serverRetainedHeapMiB": 15.666061401367188, - "idleRssMiB": 84.5, - "server": { - "type": "stats", - "elapsedMs": 3001.788541, - "cpu": { - "user": 2620002, - "system": 573180 - }, - "memory": { - "rss": 126697472, - "heapTotal": 38912000, - "heapUsed": 21943392, - "external": 4213288, - "arrayBuffers": 282739 - }, - "retainedMemory": { - "rss": 126697472, - "heapTotal": 38387712, - "heapUsed": 16427056, - "external": 4213288, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123728 - }, - "idleMemory": { - "rss": 88604672, - "heapTotal": 33406976, - "heapUsed": 14169208, - "external": 4208196, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 130096, - "errors": 0, - "elapsedMs": 3001.1949170000007, - "rps": 43348.06755238816, - "latencyMs": { - "mean": 1.152940074029954, - "p50": 1.096, - "p95": 1.485, - "p99": 2.257, - "max": 6.157500000001164 - }, - "clientCpuPercent": 97.54171524874668, - "serverCpuPercent": 106.83508470685862, - "serverCpuUsPerRequest": 24.65086551469684, - "serverRssMiB": 113.859375, - "serverRetainedHeapMiB": 13.772018432617188, - "idleRssMiB": 80.59375, - "server": { - "type": "stats", - "elapsedMs": 3001.8032080000003, - "cpu": { - "user": 2573393, - "system": 633586 - }, - "memory": { - "rss": 119390208, - "heapTotal": 33832960, - "heapUsed": 17667496, - "external": 4282464, - "arrayBuffers": 290994 - }, - "retainedMemory": { - "rss": 119406592, - "heapTotal": 33832960, - "heapUsed": 14441008, - "external": 4282464, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116608 - }, - "idleMemory": { - "rss": 84508672, - "heapTotal": 31211520, - "heapUsed": 12360024, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 2, - "requests": 129572, - "errors": 0, - "elapsedMs": 3001.247083999988, - "rps": 43172.719997218504, - "latencyMs": { - "mean": 1.157616055181662, - "p50": 1.095, - "p95": 1.559, - "p99": 2.258, - "max": 6.9178329999995185 - }, - "clientCpuPercent": 97.80530952112746, - "serverCpuPercent": 106.82022932466263, - "serverCpuUsPerRequest": 24.748641681844845, - "serverRssMiB": 113.953125, - "serverRetainedHeapMiB": 13.709548950195312, - "idleRssMiB": 80.5, - "server": { - "type": "stats", - "elapsedMs": 3001.9885000000004, - "cpu": { - "user": 2578846, - "system": 627885 - }, - "memory": { - "rss": 119488512, - "heapTotal": 34357248, - "heapUsed": 15996256, - "external": 4268740, - "arrayBuffers": 279642 - }, - "retainedMemory": { - "rss": 119619584, - "heapTotal": 33832960, - "heapUsed": 14375504, - "external": 4268740, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116816 - }, - "idleMemory": { - "rss": 84410368, - "heapTotal": 30949376, - "heapUsed": 12364320, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 2, - "requests": 138179, - "errors": 0, - "elapsedMs": 3001.0421659999993, - "rps": 46043.67161697522, - "latencyMs": { - "mean": 1.0854930986474043, - "p50": 1.002, - "p95": 1.936, - "p99": 2.09, - "max": 7.095333000004757 - }, - "clientCpuPercent": 99.70956202819313, - "serverCpuPercent": 106.99840262258955, - "serverCpuUsPerRequest": 23.244262876413927, - "serverRssMiB": 115.09375, - "serverRetainedHeapMiB": 13.666206359863281, - "idleRssMiB": 80.953125, - "server": { - "type": "stats", - "elapsedMs": 3001.7915420000004, - "cpu": { - "user": 2507439, - "system": 704430 - }, - "memory": { - "rss": 120684544, - "heapTotal": 34095104, - "heapUsed": 21730936, - "external": 4310536, - "arrayBuffers": 321438 - }, - "retainedMemory": { - "rss": 120733696, - "heapTotal": 33832960, - "heapUsed": 14330056, - "external": 4310536, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117904 - }, - "idleMemory": { - "rss": 84885504, - "heapTotal": 31735808, - "heapUsed": 12365440, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 140455, - "errors": 0, - "elapsedMs": 3000.8045830000046, - "rps": 46805.7802882927, - "latencyMs": { - "mean": 1.0678067734078303, - "p50": 0.976, - "p95": 1.747, - "p99": 2.007, - "max": 5.23887499999546 - }, - "clientCpuPercent": 100.22935238898879, - "serverCpuPercent": 106.57009459564534, - "serverCpuUsPerRequest": 22.77324409953366, - "serverRssMiB": 110.78125, - "serverRetainedHeapMiB": 12.058685302734375, - "idleRssMiB": 74.6875, - "server": { - "type": "stats", - "elapsedMs": 3001.419875, - "cpu": { - "user": 2464038, - "system": 734578 - }, - "memory": { - "rss": 116162560, - "heapTotal": 31735808, - "heapUsed": 15881152, - "external": 4196146, - "arrayBuffers": 295380 - }, - "retainedMemory": { - "rss": 116178944, - "heapTotal": 31735808, - "heapUsed": 12644448, - "external": 4196146, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113456 - }, - "idleMemory": { - "rss": 78315520, - "heapTotal": 21250048, - "heapUsed": 10640032, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 96977, - "errors": 0, - "elapsedMs": 3001.5130000000063, - "rps": 32309.371973401347, - "latencyMs": { - "mean": 1.5468264163357608, - "p50": 1.503, - "p95": 1.906, - "p99": 3.034, - "max": 6.958832999996957 - }, - "clientCpuPercent": 79.28871205955113, - "serverCpuPercent": 106.82448268828462, - "serverCpuUsPerRequest": 33.06919166400281, - "serverRssMiB": 165.671875, - "serverRetainedHeapMiB": 15.732307434082031, - "idleRssMiB": 85.65625, - "server": { - "type": "stats", - "elapsedMs": 3002.0749170000004, - "cpu": { - "user": 2709146, - "system": 497805 - }, - "memory": { - "rss": 173719552, - "heapTotal": 90537984, - "heapUsed": 42868448, - "external": 4615073, - "arrayBuffers": 646882 - }, - "retainedMemory": { - "rss": 173801472, - "heapTotal": 86867968, - "heapUsed": 16496520, - "external": 4615073, - "arrayBuffers": 277690 - }, - "maxRssKiB": 169728 - }, - "idleMemory": { - "rss": 89817088, - "heapTotal": 33652736, - "heapUsed": 14022168, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 2, - "requests": 96698, - "errors": 0, - "elapsedMs": 3001.490875000003, - "rps": 32216.65633083089, - "latencyMs": { - "mean": 1.5512237116176073, - "p50": 1.492, - "p95": 1.879, - "p99": 2.988, - "max": 6.675250000000233 - }, - "clientCpuPercent": 80.13251081431315, - "serverCpuPercent": 106.59409810952496, - "serverCpuUsPerRequest": 33.09532772135928, - "serverRssMiB": 166.828125, - "serverRetainedHeapMiB": 15.665298461914062, - "idleRssMiB": 86.234375, - "server": { - "type": "stats", - "elapsedMs": 3002.2787909999997, - "cpu": { - "user": 2708246, - "system": 492006 - }, - "memory": { - "rss": 174931968, - "heapTotal": 92635136, - "heapUsed": 51081952, - "external": 4677846, - "arrayBuffers": 712027 - }, - "retainedMemory": { - "rss": 174997504, - "heapTotal": 91324416, - "heapUsed": 16426256, - "external": 4677846, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170896 - }, - "idleMemory": { - "rss": 90423296, - "heapTotal": 33128448, - "heapUsed": 14029648, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 99146, - "errors": 0, - "elapsedMs": 3001.667791999993, - "rps": 33030.30410768396, - "latencyMs": { - "mean": 1.5130151854235059, - "p50": 1.448, - "p95": 1.798, - "p99": 2.931, - "max": 6.345083000007435 - }, - "clientCpuPercent": 83.35599318047404, - "serverCpuPercent": 106.81848903399472, - "serverCpuUsPerRequest": 32.34740685453775, - "serverRssMiB": 120.921875, - "serverRetainedHeapMiB": 14.018936157226562, - "idleRssMiB": 81.75, - "server": { - "type": "stats", - "elapsedMs": 3002.397833, - "cpu": { - "user": 2672652, - "system": 534464 - }, - "memory": { - "rss": 126795776, - "heapTotal": 37322752, - "heapUsed": 15692136, - "external": 4240553, - "arrayBuffers": 350298 - }, - "retainedMemory": { - "rss": 126500864, - "heapTotal": 33914880, - "heapUsed": 14699920, - "external": 4240553, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123856 - }, - "idleMemory": { - "rss": 85721088, - "heapTotal": 31293440, - "heapUsed": 12373320, - "external": 4167902, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 3, - "requests": 111954, - "errors": 0, - "elapsedMs": 3001.30891599998, - "rps": 37301.725058414726, - "latencyMs": { - "mean": 1.3397546027654328, - "p50": 1.281, - "p95": 1.569, - "p99": 2.593, - "max": 6.345999999990454 - }, - "clientCpuPercent": 89.98074092283868, - "serverCpuPercent": 107.16628054504444, - "serverCpuUsPerRequest": 28.736900870000177, - "serverRssMiB": 138.53125, - "serverRetainedHeapMiB": 17.20830535888672, - "idleRssMiB": 88.40625, - "server": { - "type": "stats", - "elapsedMs": 3002.073958, - "cpu": { - "user": 2642331, - "system": 574880 - }, - "memory": { - "rss": 145260544, - "heapTotal": 57524224, - "heapUsed": 24756824, - "external": 4355172, - "arrayBuffers": 366074 - }, - "retainedMemory": { - "rss": 145293312, - "heapTotal": 56737792, - "heapUsed": 18044216, - "external": 4355172, - "arrayBuffers": 343226 - }, - "maxRssKiB": 141888 - }, - "idleMemory": { - "rss": 92700672, - "heapTotal": 34979840, - "heapUsed": 15782760, - "external": 4397817, - "arrayBuffers": 277651 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 124095, - "errors": 0, - "elapsedMs": 3001.2762910000165, - "rps": 41347.40955776914, - "latencyMs": { - "mean": 1.2086936154236512, - "p50": 1.148, - "p95": 1.394, - "p99": 2.361, - "max": 6.111000000004424 - }, - "clientCpuPercent": 95.73777024849007, - "serverCpuPercent": 106.29868726879619, - "serverCpuUsPerRequest": 25.715314879729238, - "serverRssMiB": 120.609375, - "serverRetainedHeapMiB": 15.580413818359375, - "idleRssMiB": 84.375, - "server": { - "type": "stats", - "elapsedMs": 3002.0521249999997, - "cpu": { - "user": 2603690, - "system": 587452 - }, - "memory": { - "rss": 126468096, - "heapTotal": 39436288, - "heapUsed": 22318680, - "external": 4216552, - "arrayBuffers": 286003 - }, - "retainedMemory": { - "rss": 126484480, - "heapTotal": 38125568, - "heapUsed": 16337248, - "external": 4216552, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123520 - }, - "idleMemory": { - "rss": 88473600, - "heapTotal": 33669120, - "heapUsed": 14169064, - "external": 4208196, - "arrayBuffers": 212115 - } - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 110859, - "errors": 0, - "elapsedMs": 3001.410666999989, - "rps": 36935.63204091871, - "latencyMs": { - "mean": 1.3530661948059783, - "p50": 1.291, - "p95": 1.63, - "p99": 2.625, - "max": 8.578832999977749 - }, - "clientCpuPercent": 89.78704679202134, - "serverCpuPercent": 107.36699080999855, - "serverCpuUsPerRequest": 29.0750322481711, - "serverRssMiB": 139.9375, - "serverRetainedHeapMiB": 17.290924072265625, - "idleRssMiB": 88.109375, - "server": { - "type": "stats", - "elapsedMs": 3002.0670000000005, - "cpu": { - "user": 2619089, - "system": 604140 - }, - "memory": { - "rss": 146735104, - "heapTotal": 58310656, - "heapUsed": 24000072, - "external": 4348296, - "arrayBuffers": 356826 - }, - "retainedMemory": { - "rss": 146751488, - "heapTotal": 58048512, - "heapUsed": 18130848, - "external": 4348296, - "arrayBuffers": 343226 - }, - "maxRssKiB": 143312 - }, - "idleMemory": { - "rss": 92389376, - "heapTotal": 35766272, - "heapUsed": 15779960, - "external": 4400189, - "arrayBuffers": 277651 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 3, - "requests": 128711, - "errors": 0, - "elapsedMs": 3001.1867499999935, - "rps": 42886.70140237034, - "latencyMs": { - "mean": 1.1653298502847367, - "p50": 1.102, - "p95": 1.555, - "p99": 2.277, - "max": 6.79941599999438 - }, - "clientCpuPercent": 97.26272448723847, - "serverCpuPercent": 106.97221594275972, - "serverCpuUsPerRequest": 24.949406033672336, - "serverRssMiB": 113.953125, - "serverRetainedHeapMiB": 13.723388671875, - "idleRssMiB": 80.796875, - "server": { - "type": "stats", - "elapsedMs": 3001.959875, - "cpu": { - "user": 2574343, - "system": 636920 - }, - "memory": { - "rss": 119488512, - "heapTotal": 34095104, - "heapUsed": 16872168, - "external": 4274545, - "arrayBuffers": 285447 - }, - "retainedMemory": { - "rss": 119668736, - "heapTotal": 33832960, - "heapUsed": 14390016, - "external": 4274545, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116864 - }, - "idleMemory": { - "rss": 84721664, - "heapTotal": 31211520, - "heapUsed": 12367480, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 3, - "requests": 139181, - "errors": 0, - "elapsedMs": 3001.0176249999786, - "rps": 46377.934884671326, - "latencyMs": { - "mean": 1.0776942537918726, - "p50": 0.998, - "p95": 1.923, - "p99": 2.087, - "max": 6.934292000019923 - }, - "clientCpuPercent": 99.73270316931315, - "serverCpuPercent": 107.15961361219927, - "serverCpuUsPerRequest": 23.1127740136944, - "serverRssMiB": 115.140625, - "serverRetainedHeapMiB": 13.651901245117188, - "idleRssMiB": 80.90625, - "server": { - "type": "stats", - "elapsedMs": 3001.9322500000003, - "cpu": { - "user": 2513601, - "system": 703258 - }, - "memory": { - "rss": 120733696, - "heapTotal": 34357248, - "heapUsed": 15816624, - "external": 4268482, - "arrayBuffers": 279384 - }, - "retainedMemory": { - "rss": 120766464, - "heapTotal": 33832960, - "heapUsed": 14315056, - "external": 4268482, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117936 - }, - "idleMemory": { - "rss": 84836352, - "heapTotal": 31211520, - "heapUsed": 12363696, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 142753, - "errors": 0, - "elapsedMs": 3000.7842079999973, - "rps": 47571.89791236069, - "latencyMs": { - "mean": 1.0506651196402137, - "p50": 0.95, - "p95": 1.658, - "p99": 1.891, - "max": 6.199249999976018 - }, - "clientCpuPercent": 100.32514140716921, - "serverCpuPercent": 106.54119302554773, - "serverCpuUsPerRequest": 22.40128753861565, - "serverRssMiB": 111.171875, - "serverRetainedHeapMiB": 11.985786437988281, - "idleRssMiB": 76.09375, - "server": { - "type": "stats", - "elapsedMs": 3001.5160419999997, - "cpu": { - "user": 2486855, - "system": 710996 - }, - "memory": { - "rss": 116572160, - "heapTotal": 31473664, - "heapUsed": 15174376, - "external": 4190986, - "arrayBuffers": 290220 - }, - "retainedMemory": { - "rss": 116604928, - "heapTotal": 31473664, - "heapUsed": 12568008, - "external": 4190986, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113872 - }, - "idleMemory": { - "rss": 79790080, - "heapTotal": 20987904, - "heapUsed": 10642848, - "external": 4688469, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 129608, - "errors": 0, - "elapsedMs": 3001.136165999982, - "rps": 43186.311060569446, - "latencyMs": { - "mean": 1.1572495931810074, - "p50": 1.099, - "p95": 1.39, - "p99": 2.263, - "max": 6.591500000009546 - }, - "clientCpuPercent": 97.38625101757604, - "serverCpuPercent": 106.98407611590612, - "serverCpuUsPerRequest": 24.7785167582248, - "serverRssMiB": 114.140625, - "serverRetainedHeapMiB": 13.7353515625, - "idleRssMiB": 81, - "server": { - "type": "stats", - "elapsedMs": 3001.843, - "cpu": { - "user": 2584995, - "system": 626499 - }, - "memory": { - "rss": 119685120, - "heapTotal": 34095104, - "heapUsed": 17085744, - "external": 4278336, - "arrayBuffers": 286866 - }, - "retainedMemory": { - "rss": 119701504, - "heapTotal": 34095104, - "heapUsed": 14402560, - "external": 4278336, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116896 - }, - "idleMemory": { - "rss": 84934656, - "heapTotal": 31473664, - "heapUsed": 12359152, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 3, - "requests": 96584, - "errors": 0, - "elapsedMs": 3002.4322499999835, - "rps": 32168.585985579037, - "latencyMs": { - "mean": 1.5535118690362422, - "p50": 1.492, - "p95": 1.845, - "p99": 2.987, - "max": 7.033374999999069 - }, - "clientCpuPercent": 80.31418527428931, - "serverCpuPercent": 106.72070578286859, - "serverCpuUsPerRequest": 33.18318769154311, - "serverRssMiB": 166.8125, - "serverRetainedHeapMiB": 15.717124938964844, - "idleRssMiB": 86.359375, - "server": { - "type": "stats", - "elapsedMs": 3003.1332500000003, - "cpu": { - "user": 2714343, - "system": 490622 - }, - "memory": { - "rss": 174915584, - "heapTotal": 90800128, - "heapUsed": 18689616, - "external": 4262549, - "arrayBuffers": 296730 - }, - "retainedMemory": { - "rss": 174964736, - "heapTotal": 86605824, - "heapUsed": 16480600, - "external": 4262549, - "arrayBuffers": 277690 - }, - "maxRssKiB": 170864 - }, - "idleMemory": { - "rss": 90554368, - "heapTotal": 33128448, - "heapUsed": 14028288, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 100949, - "errors": 0, - "elapsedMs": 3001.450917000009, - "rps": 33633.40024260663, - "latencyMs": { - "mean": 1.4859229566910221, - "p50": 1.425, - "p95": 1.761, - "p99": 2.856, - "max": 7.160250000015367 - }, - "clientCpuPercent": 83.29954642400013, - "serverCpuPercent": 107.03574368537856, - "serverCpuUsPerRequest": 31.830498568584137, - "serverRssMiB": 120.921875, - "serverRetainedHeapMiB": 14.083969116210938, - "idleRssMiB": 81.828125, - "server": { - "type": "stats", - "elapsedMs": 3002.0410839999995, - "cpu": { - "user": 2702689, - "system": 510568 - }, - "memory": { - "rss": 126795776, - "heapTotal": 37847040, - "heapUsed": 17370016, - "external": 4320777, - "arrayBuffers": 430522 - }, - "retainedMemory": { - "rss": 126484480, - "heapTotal": 34701312, - "heapUsed": 14768112, - "external": 4320777, - "arrayBuffers": 277690 - }, - "maxRssKiB": 123872 - }, - "idleMemory": { - "rss": 85803008, - "heapTotal": 31555584, - "heapUsed": 12372760, - "external": 4167902, - "arrayBuffers": 212115 - } - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 110938, - "errors": 0, - "elapsedMs": 3001.347208000021, - "rps": 36962.734502791725, - "latencyMs": { - "mean": 1.352080887919322, - "p50": 1.262, - "p95": 1.696, - "p99": 2.67, - "max": 8.852083999983734 - }, - "clientCpuPercent": 80.60263716079805, - "serverCpuPercent": 107.90713075251793, - "serverCpuUsPerRequest": 29.199372622545926, - "serverRssMiB": 173.59375, - "serverRetainedHeapMiB": 15.723434448242188, - "idleRssMiB": 85.40625, - "server": { - "type": "stats", - "elapsedMs": 3001.9517499999997, - "cpu": { - "user": 2699637, - "system": 539683 - }, - "memory": { - "rss": 182026240, - "heapTotal": 155025408, - "heapUsed": 47933152, - "external": 4713657, - "arrayBuffers": 745466 - }, - "retainedMemory": { - "rss": 182059008, - "heapTotal": 153452544, - "heapUsed": 16487216, - "external": 4713657, - "arrayBuffers": 277690 - }, - "maxRssKiB": 177792 - }, - "idleMemory": { - "rss": 89554944, - "heapTotal": 33128448, - "heapUsed": 14023688, - "external": 4442600, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "round": 3, - "requests": 123647, - "errors": 0, - "elapsedMs": 3001.1773340000072, - "rps": 41199.498143350866, - "latencyMs": { - "mean": 1.2130750036475169, - "p50": 1.156, - "p95": 1.46, - "p99": 2.343, - "max": 7.720000000001164 - }, - "clientCpuPercent": 94.92161518503569, - "serverCpuPercent": 107.48661760014697, - "serverCpuUsPerRequest": 26.094599949857255, - "serverRssMiB": 118.359375, - "serverRetainedHeapMiB": 15.624137878417969, - "idleRssMiB": 86.578125, - "server": { - "type": "stats", - "elapsedMs": 3001.7867079999996, - "cpu": { - "user": 2647982, - "system": 578537 - }, - "memory": { - "rss": 124108800, - "heapTotal": 35487744, - "heapUsed": 20811760, - "external": 4262294, - "arrayBuffers": 296475 - }, - "retainedMemory": { - "rss": 124125184, - "heapTotal": 35487744, - "heapUsed": 16383096, - "external": 4262294, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121216 - }, - "idleMemory": { - "rss": 90783744, - "heapTotal": 33128448, - "heapUsed": 13965872, - "external": 4440228, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 126554, - "errors": 0, - "elapsedMs": 3001.1387090000208, - "rps": 42168.66072217228, - "latencyMs": { - "mean": 1.1851614559634245, - "p50": 1.128, - "p95": 1.46, - "p99": 2.296, - "max": 4.960332999995444 - }, - "clientCpuPercent": 96.4487576438767, - "serverCpuPercent": 107.18680428128334, - "serverCpuUsPerRequest": 25.424190464149692, - "serverRssMiB": 115.5, - "serverRetainedHeapMiB": 13.997421264648438, - "idleRssMiB": 81.734375, - "server": { - "type": "stats", - "elapsedMs": 3001.799542, - "cpu": { - "user": 2639177, - "system": 578356 - }, - "memory": { - "rss": 121110528, - "heapTotal": 34439168, - "heapUsed": 15904392, - "external": 4184977, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 121110528, - "heapTotal": 34439168, - "heapUsed": 14677360, - "external": 4184977, - "arrayBuffers": 277690 - }, - "maxRssKiB": 118272 - }, - "idleMemory": { - "rss": 85704704, - "heapTotal": 31555584, - "heapUsed": 12367920, - "external": 4184917, - "arrayBuffers": 212115 - } - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 124407, - "errors": 0, - "elapsedMs": 3001.144417000003, - "rps": 41453.18675612399, - "latencyMs": { - "mean": 1.205642338373304, - "p50": 1.149, - "p95": 1.446, - "p99": 2.328, - "max": 5.81808299999102 - }, - "clientCpuPercent": 95.31007517656545, - "serverCpuPercent": 107.78311320697362, - "serverCpuUsPerRequest": 26.00765230252317, - "serverRssMiB": 118.59375, - "serverRetainedHeapMiB": 15.549369812011719, - "idleRssMiB": 86.375, - "server": { - "type": "stats", - "elapsedMs": 3001.89325, - "cpu": { - "user": 2664044, - "system": 571490 - }, - "memory": { - "rss": 124354560, - "heapTotal": 36012032, - "heapUsed": 23448640, - "external": 4279218, - "arrayBuffers": 311027 - }, - "retainedMemory": { - "rss": 124387328, - "heapTotal": 36012032, - "heapUsed": 16304696, - "external": 4279218, - "arrayBuffers": 277690 - }, - "maxRssKiB": 121472 - }, - "idleMemory": { - "rss": 90570752, - "heapTotal": 33390592, - "heapUsed": 13960600, - "external": 4442600, - "arrayBuffers": 212115 - } - } - ], - "finishedAt": "2026-10-27T16:21:46.011Z", - "elapsedSeconds": 200.879887166 - }, - "groups": [ - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 3, - "errors": 0, - "rps": 33633.40024260663, - "cpuUs": 31.830498568584137, - "meanMs": 1.4859229566910221, - "p95Ms": 1.798, - "rssMiB": 120.921875, - "heapMiB": 14.018936157226562, - "clientCpu": 83.35599318047404 - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 3, - "errors": 0, - "rps": 32309.371973401347, - "cpuUs": 33.06919166400281, - "meanMs": 1.5468264163357608, - "p95Ms": 1.884, - "rssMiB": 166.375, - "heapMiB": 15.723434448242188, - "clientCpu": 79.54676272663933 - }, - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "rounds": 3, - "errors": 0, - "rps": 32168.585985579037, - "cpuUs": 33.18318769154311, - "meanMs": 1.5535118690362422, - "p95Ms": 1.879, - "rssMiB": 166.828125, - "heapMiB": 15.688346862792969, - "clientCpu": 80.13251081431315 - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 3, - "errors": 0, - "rps": 42002.014145421694, - "cpuUs": 25.57026353784886, - "meanMs": 1.1898854058022599, - "p95Ms": 1.46, - "rssMiB": 115.1875, - "heapMiB": 13.993972778320312, - "clientCpu": 96.28885271942542 - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 3, - "errors": 0, - "rps": 40956.74757071642, - "cpuUs": 26.365455018793018, - "meanMs": 1.2203168658048573, - "p95Ms": 1.446, - "rssMiB": 118.78125, - "heapMiB": 15.549369812011719, - "clientCpu": 95.04269207641536 - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "rounds": 3, - "errors": 0, - "rps": 41160.48997473387, - "cpuUs": 26.20823450363882, - "meanMs": 1.2142085592856777, - "p95Ms": 1.456, - "rssMiB": 118.796875, - "heapMiB": 15.626991271972656, - "clientCpu": 94.92161518503569 - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 3, - "errors": 0, - "rps": 41386.357510985974, - "cpuUs": 25.65988776980734, - "meanMs": 1.2075836249305614, - "p95Ms": 1.399, - "rssMiB": 120.609375, - "heapMiB": 15.610618591308594, - "clientCpu": 95.73606880000065 - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 3, - "errors": 0, - "rps": 37407.53176845551, - "cpuUs": 28.67299367595974, - "meanMs": 1.3359732180724961, - "p95Ms": 1.518, - "rssMiB": 139.9375, - "heapMiB": 17.23480987548828, - "clientCpu": 90.1498919971792 - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "rounds": 3, - "errors": 0, - "rps": 37358.14613673323, - "cpuUs": 28.719671429335904, - "meanMs": 1.3378279333761678, - "p95Ms": 1.556, - "rssMiB": 138.890625, - "heapMiB": 17.20008087158203, - "clientCpu": 90.12557480696519 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 3, - "errors": 0, - "rps": 47094.69605062915, - "cpuUs": 22.595862108004077, - "meanMs": 1.061281811226363, - "p95Ms": 1.747, - "rssMiB": 111.125, - "heapMiB": 12.046852111816406, - "clientCpu": 100.27043541389784 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 3, - "errors": 0, - "rps": 43348.06755238816, - "cpuUs": 24.650963038083603, - "meanMs": 1.152940074029954, - "p95Ms": 1.421, - "rssMiB": 113.890625, - "heapMiB": 13.7353515625, - "clientCpu": 97.54171524874668 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "rounds": 3, - "errors": 0, - "rps": 43172.719997218504, - "cpuUs": 24.748641681844845, - "meanMs": 1.157616055181662, - "p95Ms": 1.555, - "rssMiB": 113.953125, - "heapMiB": 13.709548950195312, - "clientCpu": 97.75805511707297 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "rounds": 3, - "errors": 0, - "rps": 46048.28347525896, - "cpuUs": 23.174358863031145, - "meanMs": 1.0853443055386283, - "p95Ms": 1.936, - "rssMiB": 115.140625, - "heapMiB": 13.6630859375, - "clientCpu": 99.73270316931315 - } - ], - "comparisons": [ - { - "framework": "express", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "versusIsolatedControl": null, - "medianGainPercent": -0.6798086352298061, - "minGainPercent": -12.970221445197993, - "maxGainPercent": -0.2869620698501496, - "medianCpuUsDelta": 0.2141724639805176, - "medianP95MsDelta": 0.028000000000000025, - "medianRssMiBDelta": 0.640625, - "medianHeapMiBDelta": -0.02808380126953125, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": -0.6798086352298061, - "cpuUsDelta": 0.2141724639805176, - "p95MsDelta": 0.028000000000000025, - "rssMiBDelta": 0.640625, - "heapMiBDelta": -0.02808380126953125 - }, - { - "round": 2, - "throughputPercent": -0.2869620698501496, - "cpuUsDelta": 0.026136057356474396, - "p95MsDelta": -0.026999999999999913, - "rssMiBDelta": 1.15625, - "heapMiBDelta": -0.06700897216796875 - }, - { - "round": 3, - "throughputPercent": -12.970221445197993, - "cpuUsDelta": 3.9838150689971847, - "p95MsDelta": 0.14900000000000002, - "rssMiBDelta": -6.78125, - "heapMiBDelta": -0.00630950927734375 - } - ] - }, - { - "framework": "koa", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "versusIsolatedControl": null, - "medianGainPercent": 0.23981451630030737, - "minGainPercent": -0.6119882031401347, - "maxGainPercent": 0.903191503418399, - "medianCpuUsDelta": -0.05058820171054279, - "medianP95MsDelta": 0, - "medianRssMiBDelta": -0.171875, - "medianHeapMiBDelta": 0.07476806640625, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": 0.903191503418399, - "cpuUsDelta": -0.1660272892956307, - "p95MsDelta": -0.004999999999999893, - "rssMiBDelta": -0.171875, - "heapMiBDelta": 0.109649658203125 - }, - { - "round": 2, - "throughputPercent": 0.23981451630030737, - "cpuUsDelta": -0.05058820171054279, - "p95MsDelta": 0, - "rssMiBDelta": 0.015625, - "heapMiBDelta": 0.0694732666015625 - }, - { - "round": 3, - "throughputPercent": -0.6119882031401347, - "cpuUsDelta": 0.08694764733408533, - "p95MsDelta": 0.014000000000000012, - "rssMiBDelta": -0.234375, - "heapMiBDelta": 0.07476806640625 - } - ] - }, - { - "framework": "leizmweb", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "versusIsolatedControl": null, - "medianGainPercent": -0.07556027280051225, - "minGainPercent": -0.13202055679045754, - "maxGainPercent": 0.9911648921844485, - "medianCpuUsDelta": 0.026173049115094216, - "medianP95MsDelta": 0.0009999999999998899, - "medianRssMiBDelta": -1.40625, - "medianHeapMiBDelta": -0.052032470703125, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": -0.13202055679045754, - "cpuUsDelta": 0.0466777533761622, - "p95MsDelta": 0.039000000000000146, - "rssMiBDelta": 0.15625, - "heapMiBDelta": -0.052032470703125 - }, - { - "round": 2, - "throughputPercent": -0.07556027280051225, - "cpuUsDelta": 0.026173049115094216, - "p95MsDelta": 0.0009999999999998899, - "rssMiBDelta": -1.53125, - "heapMiBDelta": 0.01329803466796875 - }, - { - "round": 3, - "throughputPercent": 0.9911648921844485, - "cpuUsDelta": -0.33813137817092453, - "p95MsDelta": -0.06099999999999994, - "rssMiBDelta": -1.40625, - "heapMiBDelta": -0.08261871337890625 - } - ] - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "reply", - "versusIsolatedControl": null, - "medianGainPercent": -0.4045106623443817, - "minGainPercent": -0.6937607099131493, - "maxGainPercent": -0.06084173741922605, - "medianCpuUsDelta": 0.0977761671480053, - "medianP95MsDelta": 0.07399999999999984, - "medianRssMiBDelta": 0.09375, - "medianHeapMiBDelta": -0.011962890625, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": -0.06084173741922605, - "cpuUsDelta": 0.021184870895485375, - "p95MsDelta": 0.04200000000000004, - "rssMiBDelta": 0.875, - "heapMiBDelta": -0.00662994384765625 - }, - { - "round": 2, - "throughputPercent": -0.4045106623443817, - "cpuUsDelta": 0.0977761671480053, - "p95MsDelta": 0.07399999999999984, - "rssMiBDelta": 0.09375, - "heapMiBDelta": -0.062469482421875 - }, - { - "round": 3, - "throughputPercent": -0.6937607099131493, - "cpuUsDelta": 0.17088927544753574, - "p95MsDelta": 0.16500000000000004, - "rssMiBDelta": -0.1875, - "heapMiBDelta": -0.011962890625 - } - ] - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "versusIsolatedControl": null, - "medianGainPercent": 6.218510343810135, - "minGainPercent": 6.174797489300854, - "maxGainPercent": 7.390359921285206, - "medianCpuUsDelta": -1.476604175052458, - "medianP95MsDelta": 0.5330000000000001, - "medianRssMiBDelta": 1.234375, - "medianHeapMiBDelta": -0.0834503173828125, - "allRoundsPositive": true, - "pairs": [ - { - "round": 1, - "throughputPercent": 6.174797489300854, - "cpuUsDelta": -1.476604175052458, - "p95MsDelta": 0.5349999999999999, - "rssMiBDelta": 1.40625, - "heapMiBDelta": -0.04140472412109375 - }, - { - "round": 2, - "throughputPercent": 6.218510343810135, - "cpuUsDelta": -1.4066026382829122, - "p95MsDelta": 0.45099999999999985, - "rssMiBDelta": 1.234375, - "heapMiBDelta": -0.10581207275390625 - }, - { - "round": 3, - "throughputPercent": 7.390359921285206, - "cpuUsDelta": -1.6657427445304016, - "p95MsDelta": 0.5330000000000001, - "rssMiBDelta": 1, - "heapMiBDelta": -0.0834503173828125 - } - ] - } - ] - }, - { - "input": "benchmarks/results/experiments/confirm-h3.json", - "raw": { - "startedAt": "2026-10-27T16:23:44.394Z", - "commit": "dfa724ec728d33655fc34cfda21b48e644b8dfee", - "harnessSha256": { - "fixture.mjs": "064fd8eb68b46d1b567bbea84b7655948def3687c5f9e68438c1bfdc511259e1", - "load.mjs": "ce51b4f707385179b4c69bfda7babe2534083005280e9819ddd207f97dafda5a", - "server.mjs": "d3d963157c8aeed9b1662a8bb4c33a49c6e1c555375b45981e80a43a9d18e72e", - "run.mjs": "0330171024592b77ca41a4779cefa8fd68ffa71478d284d380d70ebc4af4b3e4" - }, - "environment": { - "node": "v24.22.1", - "os": "Darwin 27.2.0 arm64", - "platform": "darwin", - "cpu": "Apple M2", - "logicalCpus": 8, - "availableParallelism": 8, - "systemMemoryBytes": 17179869184, - "cpuMax": null, - "memoryMax": null, - "versions": { - "erest": "3.4.0", - "packages/erest-express/": "3.4.0", - "packages/erest-koa/": "3.4.0", - "packages/erest-leizmweb/": "3.4.0", - "node_modules/express/": "5.2.1", - "node_modules/koa/": "3.0.0", - "node_modules/koa-router/": "13.1.1", - "node_modules/koa-bodyparser/": "4.4.1", - "node_modules/@leizm/web/": "2.7.3", - "node_modules/zod/": "4.4.3", - "packages/erest-h3/": "3.4.0", - "node_modules/h3/": "2.0.8" - } - }, - "config": { - "frameworks": [ - "h3" - ], - "scenarios": [ - "post" - ], - "concurrency": [ - 50 - ], - "rounds": 7, - "durationMs": 5000, - "warmupMs": 3000, - "serverCpu": null - }, - "experiments": { - "commit": "dfa724ec728d33655fc34cfda21b48e644b8dfee", - "prepareSha256": "46e93b3a12ea69caafd663a19e2525938ac75648517ee55d38d712689f27472f", - "baseline": { - "dist/lib/api.js": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "dist/lib/adapters/utils.js": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "dist/lib/params.js": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "packages/erest-express/dist/index.js": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "packages/erest-koa/dist/index.js": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "packages/erest-leizmweb/dist/index.js": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "packages/erest-h3/dist/index.js": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0" - }, - "variants": { - "control": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/control", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [], - "descriptions": [ - "Unchanged compiled runtime snapshot; control for loading an isolated copy." - ], - "caveats": [], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" - } - } - }, - "foreach": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/foreach", - "frameworks": [ - "h3" - ], - "patches": [ - "foreach" - ], - "descriptions": [ - "Eagerly copy Web Headers with forEach instead of allocating iterator entry pairs; preserve an own __proto__ key." - ], - "caveats": [ - "Requires duplicate headers, special keys, mutation timing and all H3 behavior checks before a production change." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "c8bb09d4544d051a2202d125416592ad3110e074aeb67303169f367ad8cb417f" - } - } - }, - "node-headers": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/node-headers", - "frameworks": [ - "h3" - ], - "patches": [ - "node-headers" - ], - "descriptions": [ - "Node-only diagnostic: copy IncomingMessage headers instead of converting Web Headers." - ], - "caveats": [ - "Not portable; raw array/duplicate-header normalization and mutations to Web Headers can differ. This is an attribution experiment, not a shippable replacement." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "6c8fc2556f842b23d4575f40c5c7ae686ff180e2c6232a2ffca18d2c582baf5c" - } - } - }, - "reply": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/reply", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [ - "reply" - ], - "descriptions": [ - "Use per-request Reply instances with shared prototype methods instead of four per-request method closures." - ], - "caveats": [ - "Prototype/enumerability and detached method calls differ. Requires a compatibility decision and broad Reply tests before shipping." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "d429ffa67ffa89ac2c2fe8caf785170b236ea74f88930b5ef31333f5786ce454" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "65ed901e1f72f8a9ac1060b736aa82d3bd86b7a5b5c227b691faa8c12093b134" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "00a0977f107947a232e0b457b1e3c0bdcebd2b3275ce6db19defded74ae833ef" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "6ae2c3b82c298fb7ac9cc9b0784f7aa2b4cb5dc2b86a750b2ab2dd2d42e16bd4" - } - } - }, - "hoist": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/hoist", - "frameworks": [ - "express", - "koa", - "leizmweb" - ], - "patches": [ - "hoist" - ], - "descriptions": [ - "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly." - ], - "caveats": [ - "Must retain existing hook binding semantics and all layered/requiredOneOf behavior." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "5e738ee1b62fee37841aa7a176fba29d64ec8bcf84ae7b875c153470177626d3" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "15cc07b414ac5d4393170ce4cc5fd3ce8adfee1abdb6e417b579dc105c0a9bee" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "a6b044ae94621d9d237613bcaf89c0ba3ab5e0289aa6ef695887c6168a8082f9" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" - } - } - }, - "assign": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/assign", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [ - "assign" - ], - "descriptions": [ - "Replace four object spreads for flat params with Object.assign." - ], - "caveats": [ - "Diagnostic only: Object.assign treats an own __proto__ key differently; not safe to ship unchanged." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "f3537bce8dfaf13e39757a1a43428466f8d4a50fc3cd83ab2e85c3ba29f7cf86" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "f42d3219cd2f04c72167bddb5c96a9e442860d4bbca0173d465386dc293dca48" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "72e2f5ae67dc2f7afb42032c8628ca9e61eea2f9e8ff21a2296ffe18a2a8ce58" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "f2a0e652e0405aaa9b1e23d2715b39c07d638b2853971c69aa7c1ab1c4d86780" - } - } - }, - "sync": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/sync", - "frameworks": [ - "express", - "koa", - "leizmweb", - "h3" - ], - "patches": [ - "sync" - ], - "descriptions": [ - "Avoid unconditional async typed-handler wrapper; resolve async results via a shared finish callback." - ], - "caveats": [ - "Check rejection, response schemas, envelope return bookkeeping and async onion middleware before shipping." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "d5aebe36f501e7b13f787340b16746bc335ec5106d1caa7bfde605a483ef7bd0" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "605de8a09df9bf40fa787accb9285c98c00414e8e1750c15f0562f14cf75636e" - } - } - }, - "headers": { - "runtimeRoot": "benchmarks/results/experiments/runtimes/headers", - "frameworks": [ - "h3" - ], - "patches": [ - "headers" - ], - "descriptions": [ - "Lazily materialize H3 ctx.headers on first access, cache the object and keep a setter." - ], - "caveats": [ - "Header snapshot timing/property descriptors differ; reject as a drop-in optimization without an API decision." - ], - "files": { - "dist/lib/api.js": { - "baseline": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad", - "candidate": "6fe0173efdc40064c6575c9844afae14ca5268e0562ba1e6210d7cda33bf95ad" - }, - "dist/lib/adapters/utils.js": { - "baseline": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba", - "candidate": "10590d3aed6945ff01c4272fbc5724c7a8b2117a91fd4f4521ed7a850bc380ba" - }, - "dist/lib/params.js": { - "baseline": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588", - "candidate": "5e54ecbd319ec8fd56e3c9cdcafeab7e3125151e828826f4437d0c6c2794f588" - }, - "packages/erest-express/dist/index.js": { - "baseline": "20915b5613e7b019007b7c417c2e2722f611e83c3191c4fe085ada2ebc3dc123", - "candidate": "b81f5809438b9e4eeac16d79941e1c455a8ac6e5e2edb5f609811e4919988c98" - }, - "packages/erest-koa/dist/index.js": { - "baseline": "db70fb0d027773a757f14163b02af6b93e6822bcc17a7d6183ff20b586ac2876", - "candidate": "956c31fc0f0dc50f150820065676ba9a92785bcf33916a988a7eeb92605f9870" - }, - "packages/erest-leizmweb/dist/index.js": { - "baseline": "2b157a0c9f2199dc2e6579be5ec0c0f536b7185be571765b3d8c907d1a253b2e", - "candidate": "209644619cc570941a1f956a8683b1c6281675792bc671968a649a1cf08bd755" - }, - "packages/erest-h3/dist/index.js": { - "baseline": "efa81d548e5feb2ae20a95881ed53cf6b353fcce0e2a4c8941d91bf6ff259cd0", - "candidate": "00e65ed2af97fe50a1937ca1ef49645a9911b57839bfe9ed400468d2655d8b78" - } - } - } - } - }, - "selectedVariants": [ - "control", - "foreach", - "node-headers" - ], - "samples": [ - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 1, - "requests": 233905, - "errors": 0, - "elapsedMs": 5000.643458, - "rps": 46774.98045292555, - "latencyMs": { - "mean": 1.0687111520360864, - "p50": 0.977, - "p95": 1.895, - "p99": 2.014, - "max": 7.241541000000325 - }, - "clientCpuPercent": 101.53785293124572, - "serverCpuPercent": 104.00021899152249, - "serverCpuUsPerRequest": 22.237515230542314, - "serverRssMiB": 112.265625, - "serverRetainedHeapMiB": 11.966827392578125, - "idleRssMiB": 75.671875, - "server": { - "type": "stats", - "elapsedMs": 5001.399084000001, - "cpu": { - "user": 4009419, - "system": 1192047 - }, - "memory": { - "rss": 117719040, - "heapTotal": 31997952, - "heapUsed": 18142400, - "external": 4215496, - "arrayBuffers": 314730 - }, - "retainedMemory": { - "rss": 117768192, - "heapTotal": 31735808, - "heapUsed": 12548128, - "external": 4215496, - "arrayBuffers": 277690 - }, - "maxRssKiB": 115008 - }, - "idleMemory": { - "rss": 79347712, - "heapTotal": 20987904, - "heapUsed": 10642552, - "external": 4688469, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 1, - "requests": 217955, - "errors": 0, - "elapsedMs": 5001.141041999999, - "rps": 43581.05443729656, - "latencyMs": { - "mean": 1.1469965741093657, - "p50": 1.091, - "p95": 1.329, - "p99": 2.211, - "max": 5.759749999999258 - }, - "clientCpuPercent": 97.94102903446971, - "serverCpuPercent": 104.29073910493977, - "serverCpuUsPerRequest": 23.936486889495537, - "serverRssMiB": 114.1875, - "serverRetainedHeapMiB": 13.780784606933594, - "idleRssMiB": 80.5625, - "server": { - "type": "stats", - "elapsedMs": 5002.435542, - "cpu": { - "user": 4183545, - "system": 1033532 - }, - "memory": { - "rss": 119734272, - "heapTotal": 34357248, - "heapUsed": 15561608, - "external": 4269177, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119865344, - "heapTotal": 33832960, - "heapUsed": 14450200, - "external": 4269177, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117056 - }, - "idleMemory": { - "rss": 84475904, - "heapTotal": 31211520, - "heapUsed": 12358056, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "round": 1, - "requests": 220756, - "errors": 0, - "elapsedMs": 5001.129459, - "rps": 44141.228858358976, - "latencyMs": { - "mean": 1.132387331053281, - "p50": 1.076, - "p95": 1.354, - "p99": 2.187, - "max": 7.72899999999936 - }, - "clientCpuPercent": 97.7100481013563, - "serverCpuPercent": 104.19327878955525, - "serverCpuUsPerRequest": 23.608305097030204, - "serverRssMiB": 114.296875, - "serverRetainedHeapMiB": 13.704780578613281, - "idleRssMiB": 80.890625, - "server": { - "type": "stats", - "elapsedMs": 5001.930125000001, - "cpu": { - "user": 4126337, - "system": 1085338 - }, - "memory": { - "rss": 119848960, - "heapTotal": 34619392, - "heapUsed": 20328712, - "external": 4298152, - "arrayBuffers": 309054 - }, - "retainedMemory": { - "rss": 119914496, - "heapTotal": 33832960, - "heapUsed": 14370504, - "external": 4298152, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117104 - }, - "idleMemory": { - "rss": 84819968, - "heapTotal": 31211520, - "heapUsed": 12362496, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "round": 1, - "requests": 218174, - "errors": 0, - "elapsedMs": 5001.106625, - "rps": 43625.14466485705, - "latencyMs": { - "mean": 1.1458320580775154, - "p50": 1.088, - "p95": 1.356, - "p99": 2.198, - "max": 5.722874999999476 - }, - "clientCpuPercent": 98.24635562534121, - "serverCpuPercent": 104.47713844967797, - "serverCpuUsPerRequest": 23.95284039344743, - "serverRssMiB": 114.265625, - "serverRetainedHeapMiB": 13.760238647460938, - "idleRssMiB": 80.625, - "server": { - "type": "stats", - "elapsedMs": 5001.943083, - "cpu": { - "user": 4195675, - "system": 1030212 - }, - "memory": { - "rss": 119816192, - "heapTotal": 34357248, - "heapUsed": 17155624, - "external": 4276609, - "arrayBuffers": 287511 - }, - "retainedMemory": { - "rss": 119947264, - "heapTotal": 34095104, - "heapUsed": 14428656, - "external": 4276609, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117136 - }, - "idleMemory": { - "rss": 84541440, - "heapTotal": 31211520, - "heapUsed": 12363840, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 1, - "requests": 229424, - "errors": 0, - "elapsedMs": 5001.0610000000015, - "rps": 45875.06531114096, - "latencyMs": { - "mean": 1.0896086443005295, - "p50": 1.029, - "p95": 1.861, - "p99": 2.097, - "max": 5.203041000000667 - }, - "clientCpuPercent": 99.60604359754856, - "serverCpuPercent": 104.40918927062056, - "serverCpuUsPerRequest": 22.76248343678081, - "serverRssMiB": 114.640625, - "serverRetainedHeapMiB": 13.765617370605469, - "idleRssMiB": 80.390625, - "server": { - "type": "stats", - "elapsedMs": 5001.7245, - "cpu": { - "user": 4080602, - "system": 1141658 - }, - "memory": { - "rss": 120209408, - "heapTotal": 34095104, - "heapUsed": 18951272, - "external": 4291057, - "arrayBuffers": 301959 - }, - "retainedMemory": { - "rss": 120209408, - "heapTotal": 33570816, - "heapUsed": 14434296, - "external": 4291057, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117392 - }, - "idleMemory": { - "rss": 84295680, - "heapTotal": 31211520, - "heapUsed": 12363704, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 2, - "requests": 217491, - "errors": 0, - "elapsedMs": 5001.214457999995, - "rps": 43487.637218215896, - "latencyMs": { - "mean": 1.1494557709284499, - "p50": 1.093, - "p95": 1.338, - "p99": 2.207, - "max": 6.336666999995941 - }, - "clientCpuPercent": 98.12366658562524, - "serverCpuPercent": 104.34202644821703, - "serverCpuUsPerRequest": 23.99638145946269, - "serverRssMiB": 114.1875, - "serverRetainedHeapMiB": 13.80682373046875, - "idleRssMiB": 80.609375, - "server": { - "type": "stats", - "elapsedMs": 5001.816792, - "cpu": { - "user": 4184685, - "system": 1034312 - }, - "memory": { - "rss": 119734272, - "heapTotal": 34095104, - "heapUsed": 16232560, - "external": 4273821, - "arrayBuffers": 282351 - }, - "retainedMemory": { - "rss": 119734272, - "heapTotal": 34095104, - "heapUsed": 14477504, - "external": 4273821, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116928 - }, - "idleMemory": { - "rss": 84525056, - "heapTotal": 31211520, - "heapUsed": 12358488, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "round": 2, - "requests": 216769, - "errors": 0, - "elapsedMs": 5001.215665999996, - "rps": 43343.26181405674, - "latencyMs": { - "mean": 1.1532619846749563, - "p50": 1.094, - "p95": 1.362, - "p99": 2.214, - "max": 7.521708000000217 - }, - "clientCpuPercent": 98.0133097103676, - "serverCpuPercent": 104.21025625467114, - "serverCpuUsPerRequest": 24.04578145399019, - "serverRssMiB": 114.171875, - "serverRetainedHeapMiB": 13.809623718261719, - "idleRssMiB": 80.59375, - "server": { - "type": "stats", - "elapsedMs": 5001.79175, - "cpu": { - "user": 4179133, - "system": 1033247 - }, - "memory": { - "rss": 119717888, - "heapTotal": 34619392, - "heapUsed": 15584072, - "external": 4267063, - "arrayBuffers": 277965 - }, - "retainedMemory": { - "rss": 119734272, - "heapTotal": 34095104, - "heapUsed": 14480440, - "external": 4267063, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116928 - }, - "idleMemory": { - "rss": 84508672, - "heapTotal": 30949376, - "heapUsed": 12366056, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "round": 2, - "requests": 219352, - "errors": 0, - "elapsedMs": 5000.919708999994, - "rps": 43862.33188372116, - "latencyMs": { - "mean": 1.1396480123363497, - "p50": 1.081, - "p95": 1.344, - "p99": 2.18, - "max": 5.419459000004281 - }, - "clientCpuPercent": 98.47158695904601, - "serverCpuPercent": 104.4844581452081, - "serverCpuUsPerRequest": 23.8243690506583, - "serverRssMiB": 113.984375, - "serverRetainedHeapMiB": 13.757392883300781, - "idleRssMiB": 80.421875, - "server": { - "type": "stats", - "elapsedMs": 5001.627125, - "cpu": { - "user": 4185856, - "system": 1040067 - }, - "memory": { - "rss": 119521280, - "heapTotal": 34095104, - "heapUsed": 19322848, - "external": 4290799, - "arrayBuffers": 301701 - }, - "retainedMemory": { - "rss": 119537664, - "heapTotal": 34095104, - "heapUsed": 14425672, - "external": 4290799, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116736 - }, - "idleMemory": { - "rss": 84328448, - "heapTotal": 31211520, - "heapUsed": 12363000, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 2, - "requests": 231126, - "errors": 0, - "elapsedMs": 5001.012208, - "rps": 46215.84399059719, - "latencyMs": { - "mean": 1.0815766045706512, - "p50": 1.004, - "p95": 1.939, - "p99": 2.08, - "max": 5.540459000010742 - }, - "clientCpuPercent": 99.71853282066613, - "serverCpuPercent": 104.36212296872137, - "serverCpuUsPerRequest": 22.58455993700406, - "serverRssMiB": 114.703125, - "serverRetainedHeapMiB": 13.730995178222656, - "idleRssMiB": 80.921875, - "server": { - "type": "stats", - "elapsedMs": 5001.6987500000005, - "cpu": { - "user": 4054982, - "system": 1164897 - }, - "memory": { - "rss": 120274944, - "heapTotal": 34357248, - "heapUsed": 21378560, - "external": 4308601, - "arrayBuffers": 319503 - }, - "retainedMemory": { - "rss": 120389632, - "heapTotal": 33570816, - "heapUsed": 14397992, - "external": 4308601, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117568 - }, - "idleMemory": { - "rss": 84852736, - "heapTotal": 30949376, - "heapUsed": 12362008, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 2, - "requests": 236510, - "errors": 0, - "elapsedMs": 5000.930500000002, - "rps": 47293.19873571526, - "latencyMs": { - "mean": 1.056925664593459, - "p50": 0.942, - "p95": 1.834, - "p99": 1.96, - "max": 5.412374999999884 - }, - "clientCpuPercent": 100.21107071973901, - "serverCpuPercent": 103.96416017398202, - "serverCpuUsPerRequest": 21.9854932138176, - "serverRssMiB": 110.96875, - "serverRetainedHeapMiB": 12.047996520996094, - "idleRssMiB": 75.15625, - "server": { - "type": "stats", - "elapsedMs": 5001.520708, - "cpu": { - "user": 4008388, - "system": 1191401 - }, - "memory": { - "rss": 116359168, - "heapTotal": 31997952, - "heapUsed": 18562704, - "external": 4217947, - "arrayBuffers": 317181 - }, - "retainedMemory": { - "rss": 116359168, - "heapTotal": 31997952, - "heapUsed": 12633240, - "external": 4217947, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113632 - }, - "idleMemory": { - "rss": 78807040, - "heapTotal": 20987904, - "heapUsed": 10640912, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "round": 3, - "requests": 218378, - "errors": 0, - "elapsedMs": 5001.203666999994, - "rps": 43665.08835481909, - "latencyMs": { - "mean": 1.144745380198587, - "p50": 1.088, - "p95": 1.383, - "p99": 2.197, - "max": 6.589916999990237 - }, - "clientCpuPercent": 97.97261471935184, - "serverCpuPercent": 104.1667071717, - "serverCpuUsPerRequest": 23.859395177169862, - "serverRssMiB": 113.875, - "serverRetainedHeapMiB": 13.710319519042969, - "idleRssMiB": 80.40625, - "server": { - "type": "stats", - "elapsedMs": 5001.950375, - "cpu": { - "user": 4181575, - "system": 1028792 - }, - "memory": { - "rss": 119406592, - "heapTotal": 34095104, - "heapUsed": 16407096, - "external": 4272094, - "arrayBuffers": 282996 - }, - "retainedMemory": { - "rss": 119570432, - "heapTotal": 33832960, - "heapUsed": 14376312, - "external": 4272094, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116768 - }, - "idleMemory": { - "rss": 84312064, - "heapTotal": 31473664, - "heapUsed": 12362136, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "round": 3, - "requests": 215560, - "errors": 0, - "elapsedMs": 5001.172250000003, - "rps": 43101.894760773306, - "latencyMs": { - "mean": 1.1597070238309282, - "p50": 1.106, - "p95": 1.332, - "p99": 2.229, - "max": 6.24358399999619 - }, - "clientCpuPercent": 97.54904962531528, - "serverCpuPercent": 103.97844351877336, - "serverCpuUsPerRequest": 24.127073668584153, - "serverRssMiB": 113.890625, - "serverRetainedHeapMiB": 13.790252685546875, - "idleRssMiB": 81.015625, - "server": { - "type": "stats", - "elapsedMs": 5001.83675, - "cpu": { - "user": 4056048, - "system": 1144784 - }, - "memory": { - "rss": 119422976, - "heapTotal": 33832960, - "heapUsed": 22177640, - "external": 4309504, - "arrayBuffers": 320406 - }, - "retainedMemory": { - "rss": 119455744, - "heapTotal": 33832960, - "heapUsed": 14460128, - "external": 4309504, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116656 - }, - "idleMemory": { - "rss": 84951040, - "heapTotal": 31473664, - "heapUsed": 12367416, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 3, - "requests": 226990, - "errors": 0, - "elapsedMs": 5001.080833, - "rps": 45388.18858959243, - "latencyMs": { - "mean": 1.1013201527424081, - "p50": 1.032, - "p95": 1.958, - "p99": 2.112, - "max": 5.296833999993396 - }, - "clientCpuPercent": 99.4983717752678, - "serverCpuPercent": 104.26526351305455, - "serverCpuUsPerRequest": 22.975408608308737, - "serverRssMiB": 114.921875, - "serverRetainedHeapMiB": 13.65631103515625, - "idleRssMiB": 80.390625, - "server": { - "type": "stats", - "elapsedMs": 5001.846084, - "cpu": { - "user": 3984208, - "system": 1230980 - }, - "memory": { - "rss": 120504320, - "heapTotal": 33570816, - "heapUsed": 19750288, - "external": 4296991, - "arrayBuffers": 307893 - }, - "retainedMemory": { - "rss": 120553472, - "heapTotal": 33570816, - "heapUsed": 14319680, - "external": 4296991, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117728 - }, - "idleMemory": { - "rss": 84295680, - "heapTotal": 31211520, - "heapUsed": 12362608, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 3, - "requests": 235109, - "errors": 0, - "elapsedMs": 5000.719832999996, - "rps": 47015.03140577966, - "latencyMs": { - "mean": 1.0632503735713914, - "p50": 0.927, - "p95": 1.756, - "p99": 1.923, - "max": 6.0272079999995185 - }, - "clientCpuPercent": 100.31273831612803, - "serverCpuPercent": 104.06354266005047, - "serverCpuUsPerRequest": 22.13748516645471, - "serverRssMiB": 110.921875, - "serverRetainedHeapMiB": 11.962547302246094, - "idleRssMiB": 75.15625, - "server": { - "type": "stats", - "elapsedMs": 5001.484542, - "cpu": { - "user": 3923720, - "system": 1281002 - }, - "memory": { - "rss": 116310016, - "heapTotal": 32260096, - "heapUsed": 16077056, - "external": 4197952, - "arrayBuffers": 297186 - }, - "retainedMemory": { - "rss": 116326400, - "heapTotal": 31473664, - "heapUsed": 12543640, - "external": 4197952, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113600 - }, - "idleMemory": { - "rss": 78807040, - "heapTotal": 21250048, - "heapUsed": 10641272, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 3, - "requests": 212958, - "errors": 0, - "elapsedMs": 5001.186458000011, - "rps": 42581.49576873855, - "latencyMs": { - "mean": 1.173869458132577, - "p50": 1.119, - "p95": 1.371, - "p99": 2.259, - "max": 7.055916999990586 - }, - "clientCpuPercent": 96.92885959582011, - "serverCpuPercent": 104.34426478691374, - "serverCpuUsPerRequest": 24.507696353271538, - "serverRssMiB": 113.953125, - "serverRetainedHeapMiB": 13.799201965332031, - "idleRssMiB": 80.5625, - "server": { - "type": "stats", - "elapsedMs": 5001.817791, - "cpu": { - "user": 4096572, - "system": 1122538 - }, - "memory": { - "rss": 119488512, - "heapTotal": 34357248, - "heapUsed": 15591616, - "external": 4269177, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119570432, - "heapTotal": 33832960, - "heapUsed": 14469512, - "external": 4269177, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116768 - }, - "idleMemory": { - "rss": 84475904, - "heapTotal": 30949376, - "heapUsed": 12359576, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "round": 4, - "requests": 215949, - "errors": 0, - "elapsedMs": 5001.121333000003, - "rps": 43180.11614216517, - "latencyMs": { - "mean": 1.1576461992090499, - "p50": 1.103, - "p95": 1.358, - "p99": 2.225, - "max": 5.3585000000020955 - }, - "clientCpuPercent": 97.48475742490044, - "serverCpuPercent": 104.4350268726841, - "serverCpuUsPerRequest": 24.189428985547515, - "serverRssMiB": 114.078125, - "serverRetainedHeapMiB": 13.7730712890625, - "idleRssMiB": 80.859375, - "server": { - "type": "stats", - "elapsedMs": 5001.849625000001, - "cpu": { - "user": 4072488, - "system": 1151195 - }, - "memory": { - "rss": 119619584, - "heapTotal": 34095104, - "heapUsed": 17700232, - "external": 4279963, - "arrayBuffers": 290865 - }, - "retainedMemory": { - "rss": 119717888, - "heapTotal": 33832960, - "heapUsed": 14442112, - "external": 4279963, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116912 - }, - "idleMemory": { - "rss": 84787200, - "heapTotal": 31211520, - "heapUsed": 12362592, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 4, - "requests": 229189, - "errors": 0, - "elapsedMs": 5001.026540999999, - "rps": 45828.3910555235, - "latencyMs": { - "mean": 1.0907532178987682, - "p50": 1.013, - "p95": 1.95, - "p99": 2.092, - "max": 5.864667000016198 - }, - "clientCpuPercent": 99.56963753694265, - "serverCpuPercent": 104.49532452034585, - "serverCpuUsPerRequest": 22.804794296410385, - "serverRssMiB": 114.875, - "serverRetainedHeapMiB": 13.676445007324219, - "idleRssMiB": 81, - "server": { - "type": "stats", - "elapsedMs": 5001.762542, - "cpu": { - "user": 3990968, - "system": 1235640 - }, - "memory": { - "rss": 120455168, - "heapTotal": 34095104, - "heapUsed": 18523104, - "external": 4288090, - "arrayBuffers": 298992 - }, - "retainedMemory": { - "rss": 120504320, - "heapTotal": 34095104, - "heapUsed": 14340792, - "external": 4288090, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117680 - }, - "idleMemory": { - "rss": 84934656, - "heapTotal": 31473664, - "heapUsed": 12363712, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 4, - "requests": 234355, - "errors": 0, - "elapsedMs": 5000.936457999982, - "rps": 46862.22309925635, - "latencyMs": { - "mean": 1.066648095210283, - "p50": 0.939, - "p95": 1.836, - "p99": 1.967, - "max": 5.805292000004556 - }, - "clientCpuPercent": 100.20983154031545, - "serverCpuPercent": 104.09593445991055, - "serverCpuUsPerRequest": 22.216590215698407, - "serverRssMiB": 110.96875, - "serverRetainedHeapMiB": 11.979652404785156, - "idleRssMiB": 74.453125, - "server": { - "type": "stats", - "elapsedMs": 5001.702542, - "cpu": { - "user": 3930679, - "system": 1275890 - }, - "memory": { - "rss": 116359168, - "heapTotal": 31473664, - "heapUsed": 15018176, - "external": 4189309, - "arrayBuffers": 288543 - }, - "retainedMemory": { - "rss": 116375552, - "heapTotal": 31473664, - "heapUsed": 12561576, - "external": 4189309, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113648 - }, - "idleMemory": { - "rss": 78069760, - "heapTotal": 20987904, - "heapUsed": 10641320, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 4, - "requests": 213044, - "errors": 0, - "elapsedMs": 5001.121333999996, - "rps": 42599.24640332675, - "latencyMs": { - "mean": 1.1734142144861732, - "p50": 1.119, - "p95": 1.356, - "p99": 2.26, - "max": 13.683625000005122 - }, - "clientCpuPercent": 97.03337863468049, - "serverCpuPercent": 104.24153323139188, - "serverCpuUsPerRequest": 24.473639248230413, - "serverRssMiB": 114.328125, - "serverRetainedHeapMiB": 13.784942626953125, - "idleRssMiB": 81.0625, - "server": { - "type": "stats", - "elapsedMs": 5001.808625, - "cpu": { - "user": 4080422, - "system": 1133540 - }, - "memory": { - "rss": 119881728, - "heapTotal": 34095104, - "heapUsed": 15570688, - "external": 4269177, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119914496, - "heapTotal": 34095104, - "heapUsed": 14454560, - "external": 4269177, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117104 - }, - "idleMemory": { - "rss": 85000192, - "heapTotal": 31735808, - "heapUsed": 12360520, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "round": 4, - "requests": 213352, - "errors": 0, - "elapsedMs": 5001.219249999995, - "rps": 42659.997359643894, - "latencyMs": { - "mean": 1.1717270322846607, - "p50": 1.119, - "p95": 1.352, - "p99": 2.257, - "max": 5.241207999992184 - }, - "clientCpuPercent": 96.84564418966445, - "serverCpuPercent": 104.13156174341403, - "serverCpuUsPerRequest": 24.413021673103604, - "serverRssMiB": 113.859375, - "serverRetainedHeapMiB": 13.753440856933594, - "idleRssMiB": 80.625, - "server": { - "type": "stats", - "elapsedMs": 5001.91, - "cpu": { - "user": 4082641, - "system": 1125926 - }, - "memory": { - "rss": 119390208, - "heapTotal": 33832960, - "heapUsed": 15820352, - "external": 4268611, - "arrayBuffers": 279513 - }, - "retainedMemory": { - "rss": 119422976, - "heapTotal": 33832960, - "heapUsed": 14421528, - "external": 4268611, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116624 - }, - "idleMemory": { - "rss": 84541440, - "heapTotal": 31211520, - "heapUsed": 12360992, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 5, - "requests": 227669, - "errors": 0, - "elapsedMs": 5001.116209, - "rps": 45523.637221284174, - "latencyMs": { - "mean": 1.0980056653650712, - "p50": 1.026, - "p95": 1.958, - "p99": 2.106, - "max": 5.945917000004556 - }, - "clientCpuPercent": 99.43722145569524, - "serverCpuPercent": 104.47644273127892, - "serverCpuUsPerRequest": 22.953010730490316, - "serverRssMiB": 114.59375, - "serverRetainedHeapMiB": 13.730331420898438, - "idleRssMiB": 80.5625, - "server": { - "type": "stats", - "elapsedMs": 5001.786875, - "cpu": { - "user": 3978383, - "system": 1247306 - }, - "memory": { - "rss": 120160256, - "heapTotal": 34357248, - "heapUsed": 17159032, - "external": 4278673, - "arrayBuffers": 289575 - }, - "retainedMemory": { - "rss": 120193024, - "heapTotal": 33832960, - "heapUsed": 14397296, - "external": 4278673, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117376 - }, - "idleMemory": { - "rss": 84475904, - "heapTotal": 31473664, - "heapUsed": 12364216, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 5, - "requests": 233914, - "errors": 0, - "elapsedMs": 5000.953125, - "rps": 46773.88372841427, - "latencyMs": { - "mean": 1.0686885070410843, - "p50": 0.948, - "p95": 1.853, - "p99": 1.977, - "max": 22.398916000005556 - }, - "clientCpuPercent": 100.183842455032, - "serverCpuPercent": 104.04404798112206, - "serverCpuUsPerRequest": 22.2469497336628, - "serverRssMiB": 111.21875, - "serverRetainedHeapMiB": 12.050796508789062, - "idleRssMiB": 74.9375, - "server": { - "type": "stats", - "elapsedMs": 5001.605667, - "cpu": { - "user": 3929216, - "system": 1274657 - }, - "memory": { - "rss": 116621312, - "heapTotal": 31997952, - "heapUsed": 15726464, - "external": 4195372, - "arrayBuffers": 294606 - }, - "retainedMemory": { - "rss": 116719616, - "heapTotal": 31997952, - "heapUsed": 12636176, - "external": 4195372, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113984 - }, - "idleMemory": { - "rss": 78577664, - "heapTotal": 20987904, - "heapUsed": 10641304, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 5, - "requests": 212531, - "errors": 0, - "elapsedMs": 5001.167707999994, - "rps": 42496.27535186034, - "latencyMs": { - "mean": 1.1762291065021213, - "p50": 1.122, - "p95": 1.374, - "p99": 2.261, - "max": 6.006624999979977 - }, - "clientCpuPercent": 96.98379025045097, - "serverCpuPercent": 104.43341726922016, - "serverCpuUsPerRequest": 24.57750634025154, - "serverRssMiB": 114.25, - "serverRetainedHeapMiB": 13.812469482421875, - "idleRssMiB": 80.9375, - "server": { - "type": "stats", - "elapsedMs": 5001.73425, - "cpu": { - "user": 4093597, - "system": 1129885 - }, - "memory": { - "rss": 119799808, - "heapTotal": 34095104, - "heapUsed": 21626448, - "external": 4309038, - "arrayBuffers": 317568 - }, - "retainedMemory": { - "rss": 119914496, - "heapTotal": 34095104, - "heapUsed": 14483424, - "external": 4309038, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117104 - }, - "idleMemory": { - "rss": 84869120, - "heapTotal": 31211520, - "heapUsed": 12360720, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "round": 5, - "requests": 212600, - "errors": 0, - "elapsedMs": 5001.200083999982, - "rps": 42509.79693457127, - "latencyMs": { - "mean": 1.1758828274882294, - "p50": 1.123, - "p95": 1.365, - "p99": 2.269, - "max": 5.755541999998968 - }, - "clientCpuPercent": 96.73890103853756, - "serverCpuPercent": 104.21083428467158, - "serverCpuUsPerRequest": 24.518527751646285, - "serverRssMiB": 114.015625, - "serverRetainedHeapMiB": 13.758842468261719, - "idleRssMiB": 80.46875, - "server": { - "type": "stats", - "elapsedMs": 5002.012541, - "cpu": { - "user": 4097161, - "system": 1115478 - }, - "memory": { - "rss": 119554048, - "heapTotal": 33832960, - "heapUsed": 15568408, - "external": 4266805, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119619584, - "heapTotal": 33832960, - "heapUsed": 14427192, - "external": 4266805, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116816 - }, - "idleMemory": { - "rss": 84377600, - "heapTotal": 31211520, - "heapUsed": 12362656, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "round": 5, - "requests": 214412, - "errors": 0, - "elapsedMs": 5001.132041999983, - "rps": 42872.69326211498, - "latencyMs": { - "mean": 1.1659214593446043, - "p50": 1.11, - "p95": 1.361, - "p99": 2.24, - "max": 17.789916000008816 - }, - "clientCpuPercent": 97.00259779703727, - "serverCpuPercent": 104.4639578056826, - "serverCpuUsPerRequest": 24.368869279704494, - "serverRssMiB": 113.34375, - "serverRetainedHeapMiB": 13.847335815429688, - "idleRssMiB": 80.875, - "server": { - "type": "stats", - "elapsedMs": 5001.704041999999, - "cpu": { - "user": 4089771, - "system": 1135207 - }, - "memory": { - "rss": 118849536, - "heapTotal": 33832960, - "heapUsed": 17173112, - "external": 4276093, - "arrayBuffers": 286995 - }, - "retainedMemory": { - "rss": 118882304, - "heapTotal": 33832960, - "heapUsed": 14519984, - "external": 4276093, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116096 - }, - "idleMemory": { - "rss": 84803584, - "heapTotal": 31473664, - "heapUsed": 12362344, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 6, - "requests": 233992, - "errors": 0, - "elapsedMs": 5000.774583999999, - "rps": 46791.151264577784, - "latencyMs": { - "mean": 1.0682969796617032, - "p50": 0.978, - "p95": 1.732, - "p99": 1.961, - "max": 5.6118749999732245 - }, - "clientCpuPercent": 100.18174016539517, - "serverCpuPercent": 104.05929833476232, - "serverCpuUsPerRequest": 22.242427091524497, - "serverRssMiB": 111.453125, - "serverRetainedHeapMiB": 11.989128112792969, - "idleRssMiB": 75.265625, - "server": { - "type": "stats", - "elapsedMs": 5001.52325, - "cpu": { - "user": 3939361, - "system": 1265189 - }, - "memory": { - "rss": 116867072, - "heapTotal": 31735808, - "heapUsed": 19230752, - "external": 4223623, - "arrayBuffers": 322857 - }, - "retainedMemory": { - "rss": 117047296, - "heapTotal": 31473664, - "heapUsed": 12571512, - "external": 4223623, - "arrayBuffers": 277690 - }, - "maxRssKiB": 114304 - }, - "idleMemory": { - "rss": 78921728, - "heapTotal": 20463616, - "heapUsed": 10641248, - "external": 4178413, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 6, - "requests": 212024, - "errors": 0, - "elapsedMs": 5001.018042000011, - "rps": 42396.167784111254, - "latencyMs": { - "mean": 1.1790695990076605, - "p50": 1.124, - "p95": 1.381, - "p99": 2.279, - "max": 5.427540999982739 - }, - "clientCpuPercent": 96.48177550006106, - "serverCpuPercent": 104.06242454409895, - "serverCpuUsPerRequest": 24.54893785609176, - "serverRssMiB": 114.046875, - "serverRetainedHeapMiB": 13.725273132324219, - "idleRssMiB": 81.171875, - "server": { - "type": "stats", - "elapsedMs": 5001.770834000001, - "cpu": { - "user": 4085121, - "system": 1119843 - }, - "memory": { - "rss": 119586816, - "heapTotal": 33832960, - "heapUsed": 22006264, - "external": 4311618, - "arrayBuffers": 320148 - }, - "retainedMemory": { - "rss": 119619584, - "heapTotal": 33832960, - "heapUsed": 14391992, - "external": 4311618, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116816 - }, - "idleMemory": { - "rss": 85114880, - "heapTotal": 31211520, - "heapUsed": 12360672, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "round": 6, - "requests": 213138, - "errors": 0, - "elapsedMs": 5001.138916999975, - "rps": 42617.89235157954, - "latencyMs": { - "mean": 1.172917119636093, - "p50": 1.119, - "p95": 1.362, - "p99": 2.261, - "max": 6.244541000021854 - }, - "clientCpuPercent": 97.07856711391615, - "serverCpuPercent": 104.26771829292831, - "serverCpuUsPerRequest": 24.469184284360367, - "serverRssMiB": 113.8125, - "serverRetainedHeapMiB": 13.750892639160156, - "idleRssMiB": 80.84375, - "server": { - "type": "stats", - "elapsedMs": 5001.848209, - "cpu": { - "user": 4091205, - "system": 1124108 - }, - "memory": { - "rss": 119341056, - "heapTotal": 34095104, - "heapUsed": 17812568, - "external": 4281898, - "arrayBuffers": 292800 - }, - "retainedMemory": { - "rss": 119341056, - "heapTotal": 34095104, - "heapUsed": 14418856, - "external": 4281898, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116544 - }, - "idleMemory": { - "rss": 84770816, - "heapTotal": 31211520, - "heapUsed": 12363032, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "round": 6, - "requests": 215151, - "errors": 0, - "elapsedMs": 5001.253582999983, - "rps": 43019.414318708165, - "latencyMs": { - "mean": 1.1619262825039027, - "p50": 1.106, - "p95": 1.35, - "p99": 2.238, - "max": 6.932457999995677 - }, - "clientCpuPercent": 97.38726339643827, - "serverCpuPercent": 104.41340764812946, - "serverCpuUsPerRequest": 24.27389600792002, - "serverRssMiB": 114.171875, - "serverRetainedHeapMiB": 13.836471557617188, - "idleRssMiB": 80.765625, - "server": { - "type": "stats", - "elapsedMs": 5001.803042, - "cpu": { - "user": 4073182, - "system": 1149371 - }, - "memory": { - "rss": 119717888, - "heapTotal": 33832960, - "heapUsed": 16094392, - "external": 4270030, - "arrayBuffers": 280932 - }, - "retainedMemory": { - "rss": 119734272, - "heapTotal": 33832960, - "heapUsed": 14508592, - "external": 4270030, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116928 - }, - "idleMemory": { - "rss": 84688896, - "heapTotal": 31473664, - "heapUsed": 12363744, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 6, - "requests": 228006, - "errors": 0, - "elapsedMs": 5001.055499999988, - "rps": 45591.57561838707, - "latencyMs": { - "mean": 1.0963869911186397, - "p50": 1.021, - "p95": 1.963, - "p99": 2.108, - "max": 5.781083000008948 - }, - "clientCpuPercent": 99.58245814308624, - "serverCpuPercent": 104.4258810824941, - "serverCpuUsPerRequest": 22.9076559388788, - "serverRssMiB": 115.078125, - "serverRetainedHeapMiB": 13.745559692382812, - "idleRssMiB": 80.9375, - "server": { - "type": "stats", - "elapsedMs": 5001.713125, - "cpu": { - "user": 3969022, - "system": 1254061 - }, - "memory": { - "rss": 120668160, - "heapTotal": 34619392, - "heapUsed": 16592528, - "external": 4273900, - "arrayBuffers": 284802 - }, - "retainedMemory": { - "rss": 120700928, - "heapTotal": 34095104, - "heapUsed": 14413264, - "external": 4273900, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117872 - }, - "idleMemory": { - "rss": 84869120, - "heapTotal": 31211520, - "heapUsed": 12364400, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "round": 7, - "requests": 212457, - "errors": 0, - "elapsedMs": 5001.139500000019, - "rps": 42481.71841637274, - "latencyMs": { - "mean": 1.176643371967047, - "p50": 1.122, - "p95": 1.382, - "p99": 2.27, - "max": 6.779624999995576 - }, - "clientCpuPercent": 96.67128861332465, - "serverCpuPercent": 104.4671124461984, - "serverCpuUsPerRequest": 24.59473681733245, - "serverRssMiB": 113.96875, - "serverRetainedHeapMiB": 13.720344543457031, - "idleRssMiB": 80.78125, - "server": { - "type": "stats", - "elapsedMs": 5001.8842079999995, - "cpu": { - "user": 4089062, - "system": 1136262 - }, - "memory": { - "rss": 119504896, - "heapTotal": 33832960, - "heapUsed": 21077720, - "external": 4304910, - "arrayBuffers": 313440 - }, - "retainedMemory": { - "rss": 119586816, - "heapTotal": 33832960, - "heapUsed": 14386824, - "external": 4304910, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116784 - }, - "idleMemory": { - "rss": 84705280, - "heapTotal": 31211520, - "heapUsed": 12362112, - "external": 4334653, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "round": 7, - "requests": 212656, - "errors": 0, - "elapsedMs": 5001.139750000002, - "rps": 42521.50722242863, - "latencyMs": { - "mean": 1.1755754544193329, - "p50": 1.122, - "p95": 1.379, - "p99": 2.265, - "max": 7.862624999979744 - }, - "clientCpuPercent": 96.8939130325242, - "serverCpuPercent": 104.19991405893599, - "serverCpuUsPerRequest": 24.509315514257768, - "serverRssMiB": 114.015625, - "serverRetainedHeapMiB": 13.750755310058594, - "idleRssMiB": 80.84375, - "server": { - "type": "stats", - "elapsedMs": 5001.974375, - "cpu": { - "user": 4094305, - "system": 1117748 - }, - "memory": { - "rss": 119554048, - "heapTotal": 33832960, - "heapUsed": 15619928, - "external": 4266805, - "arrayBuffers": 277707 - }, - "retainedMemory": { - "rss": 119603200, - "heapTotal": 33832960, - "heapUsed": 14418712, - "external": 4266805, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116800 - }, - "idleMemory": { - "rss": 84770816, - "heapTotal": 31473664, - "heapUsed": 12363352, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "round": 7, - "requests": 214434, - "errors": 0, - "elapsedMs": 5001.180625000037, - "rps": 42876.675744939406, - "latencyMs": { - "mean": 1.165820228597199, - "p50": 1.109, - "p95": 1.38, - "p99": 2.245, - "max": 5.010416000033729 - }, - "clientCpuPercent": 97.31164228846391, - "serverCpuPercent": 104.51047075482708, - "serverCpuUsPerRequest": 24.378246919798165, - "serverRssMiB": 113.84375, - "serverRetainedHeapMiB": 13.777885437011719, - "idleRssMiB": 80.53125, - "server": { - "type": "stats", - "elapsedMs": 5001.915083, - "cpu": { - "user": 4092744, - "system": 1134781 - }, - "memory": { - "rss": 119373824, - "heapTotal": 34095104, - "heapUsed": 17548216, - "external": 4279189, - "arrayBuffers": 290091 - }, - "retainedMemory": { - "rss": 119455744, - "heapTotal": 33832960, - "heapUsed": 14447160, - "external": 4279189, - "arrayBuffers": 277690 - }, - "maxRssKiB": 116656 - }, - "idleMemory": { - "rss": 84443136, - "heapTotal": 31473664, - "heapUsed": 12363216, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "round": 7, - "requests": 228290, - "errors": 0, - "elapsedMs": 5000.990292000002, - "rps": 45648.958840250416, - "latencyMs": { - "mean": 1.0950187858733258, - "p50": 1.014, - "p95": 1.959, - "p99": 2.107, - "max": 6.930666000000201 - }, - "clientCpuPercent": 99.53402644997571, - "serverCpuPercent": 104.4735225465477, - "serverCpuUsPerRequest": 22.889841867799728, - "serverRssMiB": 114.625, - "serverRetainedHeapMiB": 13.677200317382812, - "idleRssMiB": 81.125, - "server": { - "type": "stats", - "elapsedMs": 5001.766833, - "cpu": { - "user": 3976604, - "system": 1248918 - }, - "memory": { - "rss": 120193024, - "heapTotal": 34357248, - "heapUsed": 22113408, - "external": 4314019, - "arrayBuffers": 324921 - }, - "retainedMemory": { - "rss": 120242176, - "heapTotal": 33832960, - "heapUsed": 14341584, - "external": 4314019, - "arrayBuffers": 277690 - }, - "maxRssKiB": 117424 - }, - "idleMemory": { - "rss": 85065728, - "heapTotal": 31735808, - "heapUsed": 12364208, - "external": 4332281, - "arrayBuffers": 212115 - } - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "round": 7, - "requests": 234218, - "errors": 0, - "elapsedMs": 5000.599500000011, - "rps": 46837.984125703224, - "latencyMs": { - "mean": 1.0672926279021642, - "p50": 0.951, - "p95": 1.854, - "p99": 1.99, - "max": 6.1865409999736585 - }, - "clientCpuPercent": 100.11457626230593, - "serverCpuPercent": 104.14752982353234, - "serverCpuUsPerRequest": 22.23827374497263, - "serverRssMiB": 111.046875, - "serverRetainedHeapMiB": 12.069816589355469, - "idleRssMiB": 76.109375, - "server": { - "type": "stats", - "elapsedMs": 5001.1786250000005, - "cpu": { - "user": 3947322, - "system": 1261282 - }, - "memory": { - "rss": 116441088, - "heapTotal": 31735808, - "heapUsed": 19004048, - "external": 4222591, - "arrayBuffers": 321825 - }, - "retainedMemory": { - "rss": 116457472, - "heapTotal": 31735808, - "heapUsed": 12656120, - "external": 4222591, - "arrayBuffers": 277690 - }, - "maxRssKiB": 113728 - }, - "idleMemory": { - "rss": 79806464, - "heapTotal": 21250048, - "heapUsed": 10643496, - "external": 4688469, - "arrayBuffers": 212115 - } - } - ], - "finishedAt": "2026-10-27T16:28:28.827Z", - "elapsedSeconds": 284.418437042 - }, - "groups": [ - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "native-zod", - "rounds": 7, - "errors": 0, - "rps": 46837.984125703224, - "cpuUs": 22.237515230542314, - "meanMs": 1.0672926279021642, - "p95Ms": 1.836, - "rssMiB": 111.046875, - "heapMiB": 11.989128112792969, - "clientCpu": 100.20983154031545 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "erest", - "rounds": 7, - "errors": 0, - "rps": 42581.49576873855, - "cpuUs": 24.507696353271538, - "meanMs": 1.173869458132577, - "p95Ms": 1.371, - "rssMiB": 114.1875, - "heapMiB": 13.784942626953125, - "clientCpu": 96.98379025045097 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "rounds": 7, - "errors": 0, - "rps": 42659.997359643894, - "cpuUs": 24.413021673103604, - "meanMs": 1.1717270322846607, - "p95Ms": 1.362, - "rssMiB": 114.015625, - "heapMiB": 13.750892639160156, - "clientCpu": 97.07856711391615 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "rounds": 7, - "errors": 0, - "rps": 43101.894760773306, - "cpuUs": 24.189428985547515, - "meanMs": 1.1597070238309282, - "p95Ms": 1.356, - "rssMiB": 113.984375, - "heapMiB": 13.777885437011719, - "clientCpu": 97.48475742490044 - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "rounds": 7, - "errors": 0, - "rps": 45648.958840250416, - "cpuUs": 22.889841867799728, - "meanMs": 1.0950187858733258, - "p95Ms": 1.958, - "rssMiB": 114.703125, - "heapMiB": 13.730331420898438, - "clientCpu": 99.56963753694265 - } - ], - "comparisons": [ - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "control", - "versusIsolatedControl": null, - "medianGainPercent": 0.1426104014656815, - "minGainPercent": -0.3319918335288996, - "maxGainPercent": 2.5447499354310343, - "medianCpuUsDelta": -0.07975357173139486, - "medianP95MsDelta": -0.0029999999999998916, - "medianRssMiBDelta": -0.078125, - "medianHeapMiBDelta": -0.03150177001953125, - "allRoundsPositive": false, - "pairs": [ - { - "round": 1, - "throughputPercent": 1.2853622481034277, - "cpuUsDelta": -0.3281817924653332, - "p95MsDelta": 0.025000000000000133, - "rssMiBDelta": 0.109375, - "heapMiBDelta": -0.0760040283203125 - }, - { - "round": 2, - "throughputPercent": -0.3319918335288996, - "cpuUsDelta": 0.049399994527501434, - "p95MsDelta": 0.02400000000000002, - "rssMiBDelta": -0.015625, - "heapMiBDelta": 0.00279998779296875 - }, - { - "round": 3, - "throughputPercent": 2.5447499354310343, - "cpuUsDelta": -0.6483011761016755, - "p95MsDelta": 0.01200000000000001, - "rssMiBDelta": -0.078125, - "heapMiBDelta": -0.0888824462890625 - }, - { - "round": 4, - "throughputPercent": 0.1426104014656815, - "cpuUsDelta": -0.06061757512680899, - "p95MsDelta": -0.0040000000000000036, - "rssMiBDelta": -0.46875, - "heapMiBDelta": -0.03150177001953125 - }, - { - "round": 5, - "throughputPercent": 0.03181827724658692, - "cpuUsDelta": -0.05897858860525318, - "p95MsDelta": -0.009000000000000119, - "rssMiBDelta": -0.234375, - "heapMiBDelta": -0.05362701416015625 - }, - { - "round": 6, - "throughputPercent": 0.5229825690787671, - "cpuUsDelta": -0.07975357173139486, - "p95MsDelta": -0.018999999999999906, - "rssMiBDelta": -0.234375, - "heapMiBDelta": 0.0256195068359375 - }, - { - "round": 7, - "throughputPercent": 0.09366100887422402, - "cpuUsDelta": -0.08542130307468199, - "p95MsDelta": -0.0029999999999998916, - "rssMiBDelta": 0.046875, - "heapMiBDelta": 0.0304107666015625 - } - ] - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "foreach", - "versusIsolatedControl": { - "medianGainPercent": 0.8536769255855559, - "minGainPercent": -1.2898029415841727, - "maxGainPercent": 1.2192189749484328, - "values": [ - -1.1691658951270778, - 1.1975796189295451, - -1.2898029415841727, - 1.2192189749484328, - 0.8536769255855559, - 0.9421441206342029, - 0.8352679519399553 - ] - }, - "medianGainPercent": 0.9297112812047814, - "minGainPercent": 0.10116833594269181, - "maxGainPercent": 1.4700539392394907, - "medianCpuUsDelta": -0.21648989753428438, - "medianP95MsDelta": -0.0020000000000000018, - "medianRssMiBDelta": -0.125, - "medianHeapMiBDelta": -0.00894927978515625, - "allRoundsPositive": true, - "pairs": [ - { - "round": 1, - "throughputPercent": 0.10116833594269181, - "cpuUsDelta": 0.016353503951894055, - "p95MsDelta": 0.027000000000000135, - "rssMiBDelta": 0.078125, - "heapMiBDelta": -0.02054595947265625 - }, - { - "round": 2, - "throughputPercent": 0.8616119188658011, - "cpuUsDelta": -0.17201240880438817, - "p95MsDelta": 0.006000000000000005, - "rssMiBDelta": -0.203125, - "heapMiBDelta": -0.04943084716796875 - }, - { - "round": 3, - "throughputPercent": 1.222124734323704, - "cpuUsDelta": -0.3806226846873848, - "p95MsDelta": -0.038999999999999924, - "rssMiBDelta": -0.0625, - "heapMiBDelta": -0.00894927978515625 - }, - { - "round": 4, - "throughputPercent": 1.3635681094890328, - "cpuUsDelta": -0.2842102626828975, - "p95MsDelta": 0.0020000000000000018, - "rssMiBDelta": -0.25, - "heapMiBDelta": -0.011871337890625 - }, - { - "round": 5, - "throughputPercent": 0.8857668281231135, - "cpuUsDelta": -0.20863706054704423, - "p95MsDelta": -0.013000000000000123, - "rssMiBDelta": -0.90625, - "heapMiBDelta": 0.0348663330078125 - }, - { - "round": 6, - "throughputPercent": 1.4700539392394907, - "cpuUsDelta": -0.2750418481717425, - "p95MsDelta": -0.030999999999999917, - "rssMiBDelta": 0.125, - "heapMiBDelta": 0.11119842529296875 - }, - { - "round": 7, - "throughputPercent": 0.9297112812047814, - "cpuUsDelta": -0.21648989753428438, - "p95MsDelta": -0.0020000000000000018, - "rssMiBDelta": -0.125, - "heapMiBDelta": 0.0575408935546875 - } - ] - }, - { - "framework": "h3", - "scenario": "post", - "concurrency": 50, - "mode": "node-headers", - "versusIsolatedControl": { - "medianGainPercent": 6.977546525003864, - "minGainPercent": 3.9279297328707052, - "maxGainPercent": 7.427083666153456, - "values": [ - 3.9279297328707052, - 6.6275173032981805, - 3.9461737046575074, - 7.427083666153456, - 7.089754607277099, - 6.977546525003864, - 7.354987680615821 - ] - }, - "medianGainPercent": 7.123828722300729, - "minGainPercent": 5.263780106892479, - "maxGainPercent": 7.580285861452629, - "medianCpuUsDelta": -1.6244956097612224, - "medianP95MsDelta": 0.5839999999999999, - "medianRssMiBDelta": 0.546875, - "medianHeapMiBDelta": -0.07582855224609375, - "allRoundsPositive": true, - "pairs": [ - { - "round": 1, - "throughputPercent": 5.263780106892479, - "cpuUsDelta": -1.1740034527147287, - "p95MsDelta": 0.532, - "rssMiBDelta": 0.453125, - "heapMiBDelta": -0.015167236328125 - }, - { - "round": 2, - "throughputPercent": 6.273522653556629, - "cpuUsDelta": -1.4118215224586308, - "p95MsDelta": 0.601, - "rssMiBDelta": 0.515625, - "heapMiBDelta": -0.07582855224609375 - }, - { - "round": 3, - "throughputPercent": 6.5913438928898005, - "cpuUsDelta": -1.532287744962801, - "p95MsDelta": 0.587, - "rssMiBDelta": 0.96875, - "heapMiBDelta": -0.14289093017578125 - }, - { - "round": 4, - "throughputPercent": 7.580285861452629, - "cpuUsDelta": -1.6688449518200272, - "p95MsDelta": 0.5939999999999999, - "rssMiBDelta": 0.546875, - "heapMiBDelta": -0.10849761962890625 - }, - { - "round": 5, - "throughputPercent": 7.123828722300729, - "cpuUsDelta": -1.6244956097612224, - "p95MsDelta": 0.5839999999999999, - "rssMiBDelta": 0.34375, - "heapMiBDelta": -0.0821380615234375 - }, - { - "round": 6, - "throughputPercent": 7.537020446157761, - "cpuUsDelta": -1.641281917212961, - "p95MsDelta": 0.5820000000000001, - "rssMiBDelta": 1.03125, - "heapMiBDelta": 0.02028656005859375 - }, - { - "round": 7, - "throughputPercent": 7.455537445154281, - "cpuUsDelta": -1.7048949495327221, - "p95MsDelta": 0.5770000000000002, - "rssMiBDelta": 0.65625, - "heapMiBDelta": -0.04314422607421875 - } - ] - } - ] - } - ] -} From 63f3c8c62e94a8d34c9beef516ee3c0a5ab3be87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=AE=87=E7=BF=94?= Date: Wed, 28 Oct 2026 00:51:09 +0800 Subject: [PATCH 12/12] revert: remove unrequested benchmark optimization experiments Restore the reviewed benchmark-only tree from 24c91d7, retaining four-framework comparisons and excluding all temporary results. --- CONTRIBUTING.md | 21 -- benchmarks/experiments/check-headers.mjs | 59 ------ benchmarks/experiments/prepare.mjs | 190 ------------------ benchmarks/experiments/report.mjs | 103 ---------- benchmarks/experiments/summarize-profiles.mjs | 34 ---- benchmarks/run.mjs | 25 +-- benchmarks/server.mjs | 16 +- 7 files changed, 10 insertions(+), 438 deletions(-) delete mode 100644 benchmarks/experiments/check-headers.mjs delete mode 100644 benchmarks/experiments/prepare.mjs delete mode 100644 benchmarks/experiments/report.mjs delete mode 100644 benchmarks/experiments/summarize-profiles.mjs diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 94d2455..8b3750c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -80,27 +80,6 @@ BENCH_ROUNDS=1 BENCH_MS=100 BENCH_WARMUP_MS=100 \ `benchmarks/results/` 下的 JSON、CSV 和 HTML 都是被忽略的本地临时生成物,不随工具提交。 短测结果不是线上容量结论;只有在独立复测中出现一致趋势后,才适合讨论运行时优化。 -### 隔离优化实验 - -`benchmarks/experiments/prepare.mjs` 将已构建产物复制到被忽略的结果目录,生成带哈希的实验清单, -不改动 `src/` 或原始 `dist/`。各变体的兼容性限制记录在清单中,诊断变体不能直接用于发布。 - -```bash -node benchmarks/experiments/prepare.mjs -BENCH_VARIANTS_FILE=benchmarks/results/experiments/manifest.json \ - BENCH_SCENARIOS=post BENCH_CONCURRENCY=50 BENCH_ROUNDS=3 \ - BENCH_MS=3000 BENCH_WARMUP_MS=2000 \ - BENCH_OUT=benchmarks/results/experiments/screen.json node benchmarks/run.mjs -node benchmarks/experiments/report.mjs benchmarks/results/experiments/screen.json -``` - -`BENCH_VARIANTS` 可选择清单中的变体(逗号分隔);每轮同时测量原生加 Zod、现有 erest 和所选变体。 -报告按同框架、场景、并发、轮次配对,与 erest 对照比较;轮间范围不是置信区间。 -`BENCH_PROFILE_DIR` 可单独采集服务端 CPU profile;开启 profiler 的结果只用于定位,不参与收益比较。 -报告脚本可传入多个完整结果文件,将各阶段原始数据和比较合并到 `mac-optimization.json`,并生成 HTML。 -也可只传入合并后的 JSON 重新生成报告,无需保留中间数据文件。 -采集 profile 后运行 `node benchmarks/experiments/summarize-profiles.mjs`,生成带环境、原始 profile 哈希和采样窗口说明的定位摘要。 - ## 合约专项 `test:contract` 在 Express、Koa、LeizmWeb、H3 下执行同一套 GET/POST/PUT/PATCH/DELETE 定义。 diff --git a/benchmarks/experiments/check-headers.mjs b/benchmarks/experiments/check-headers.mjs deleted file mode 100644 index ce80c27..0000000 --- a/benchmarks/experiments/check-headers.mjs +++ /dev/null @@ -1,59 +0,0 @@ -// Real HTTP differential checks, including mutations before erest snapshots headers. -import assert from "node:assert/strict"; -import { createServer } from "node:http"; -import { readFileSync, writeFileSync } from "node:fs"; -import { resolve } from "node:path"; -import { pathToFileURL } from "node:url"; -import { H3 } from "h3"; - -const manifest = JSON.parse(readFileSync("benchmarks/results/experiments/manifest.json", "utf8")); -const roots = { erest: ".", control: manifest.variants.control.runtimeRoot, foreach: manifest.variants.foreach.runtimeRoot, "node-headers": manifest.variants["node-headers"].runtimeRoot }; -const cases = []; -for (const [variant, root] of Object.entries(roots)) { - const core = await import(pathToFileURL(resolve(root, "dist/lib/index.js")).href); - const { H3Adapter } = await import(pathToFileURL(resolve(root, "packages/erest-h3/dist/index.js")).href); - const { toNodeHandler } = await import("h3/node"); - const app = new H3({ silent: true, onRequest(event) { - event.req.headers.set("x-app", "updated-before-dispatch"); - // Set through Web Headers too: the Node bridge can discard this incoming key. - event.req.headers.set("__proto__", "special"); - } }); - const service = new core.ERest({ info: { basePath: "" }, groups: { test: "Test" }, docs: { markdown: false } }); - service.api.get("/headers").group("test").register((ctx) => { - // Changes after the snapshot must not change ctx.headers. - ctx.reply.raw.req.headers.set("x-after", "not-in-snapshot"); - const first = ctx.headers; - const sameObject = first === ctx.headers; - ctx.reply.json({ headers: first, keys: Object.keys(first), sameObject, prototype: Object.getPrototypeOf(first) === Object.prototype }); - }); - service.bind({ adapter: new H3Adapter(), router: app }); - const server = createServer(toNodeHandler(app)); - await new Promise((accept, reject) => { server.once("error", reject); server.listen(0, "127.0.0.1", accept); }); - try { - const headers = new Headers([["__proto__", "special"], ["x-duplicate", "a"], ["x-duplicate", "b"], ["set-cookie", "a=1"], ["set-cookie", "b=2"], ["cookie", "a=1"], ["cookie", "b=2"]]); - const response = await fetch(`http://127.0.0.1:${server.address().port}/headers`, { headers }); - assert.equal(response.status, 200); - const result = await response.json(); - // Fetch supplies connection/host details, so compare only deterministic requested/application headers. - for (const name of Object.keys(result.headers)) if (["host", "connection", "accept", "accept-language", "sec-fetch-mode", "user-agent", "accept-encoding"].includes(name)) delete result.headers[name]; - result.keys = result.keys.filter((name) => Object.hasOwn(result.headers, name)); - if (variant === "erest") cases.push({ variant, result }); - else if (variant === "node-headers") { - assert.equal(result.headers["x-app"], undefined, "Diagnostic must expose its known Web Headers mutation incompatibility"); - cases.push({ variant, expectedIncompatibility: "Misses mutation to Web Headers before dispatch", result }); - } else { - assert.deepEqual(result, cases[0].result); - cases.push({ variant, matchesBaseline: true, result }); - } - assert.equal(result.sameObject, true); - assert.equal(result.prototype, true); - assert.equal(result.headers["x-after"], undefined); - if (variant !== "node-headers") assert.equal(result.headers.__proto__, "special"); - } finally { - server.closeAllConnections(); - await new Promise((accept) => server.close(accept)); - } -} -const output = "benchmarks/results/experiments/headers-check.json"; -writeFileSync(output, `${JSON.stringify({ cases }, null, 2)}\n`); -console.log(`Header checks passed; known Node-only mutation incompatibility reproduced. ${output}`); diff --git a/benchmarks/experiments/prepare.mjs b/benchmarks/experiments/prepare.mjs deleted file mode 100644 index 9041b5e..0000000 --- a/benchmarks/experiments/prepare.mjs +++ /dev/null @@ -1,190 +0,0 @@ -// Isolated, reproducible compiled-runtime experiments. Never edits src/ or package dist/. -import assert from "node:assert/strict"; -import { cpSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; -import { createHash } from "node:crypto"; -import { resolve, relative, dirname } from "node:path"; -import { fileURLToPath } from "node:url"; -import { execFileSync } from "node:child_process"; - -const root = resolve(dirname(fileURLToPath(import.meta.url)), "../.."); -const destination = resolve(root, "benchmarks/results/experiments/runtimes"); -const frameworks = ["express", "koa", "leizmweb", "h3"]; -const adapterFile = (framework) => `packages/erest-${framework}/dist/index.js`; -const hash = (source) => createHash("sha256").update(source).digest("hex"); -const baseline = Object.fromEntries( - ["dist/lib/api.js", "dist/lib/adapters/utils.js", "dist/lib/params.js", ...frameworks.map(adapterFile)] - .map((name) => [name, hash(readFileSync(resolve(root, name)))]) -); -const variants = {}; - -function replace(source, before, after) { - assert.equal(source.split(before).length - 1, 1, `Patch must match exactly once: ${before}`); - return source.replace(before, after); -} - -const changes = { - foreach: { - frameworks: ["h3"], - description: "Eagerly copy Web Headers with forEach instead of allocating iterator entry pairs; preserve an own __proto__ key.", - caveat: "Requires duplicate headers, special keys, mutation timing and all H3 behavior checks before a production change.", - patch(file, source) { - if (file !== adapterFile("h3")) return source; - source = replace(source, "headers: Object.fromEntries(event.req.headers),", "headers: copyHeaders(event.req.headers),"); - return `function copyHeaders(input) { - const output = {}; - input.forEach((value, key) => { - if (key === "__proto__") Object.defineProperty(output, key, { value, writable: true, enumerable: true, configurable: true }); - else output[key] = value; - }); - return output; - }\n` + source; - }, - }, - "node-headers": { - frameworks: ["h3"], - description: "Node-only diagnostic: copy IncomingMessage headers instead of converting Web Headers.", - caveat: "Not portable; raw array/duplicate-header normalization and mutations to Web Headers can differ. This is an attribution experiment, not a shippable replacement.", - patch(file, source) { - if (file !== adapterFile("h3")) return source; - return replace(source, "headers: Object.fromEntries(event.req.headers),", "headers: event.runtime?.node?.req ? { ...event.runtime.node.req.headers } : Object.fromEntries(event.req.headers),"); - }, - }, - reply: { - frameworks, - description: "Use per-request Reply instances with shared prototype methods instead of four per-request method closures.", - caveat: "Prototype/enumerability and detached method calls differ. Requires a compatibility decision and broad Reply tests before shipping.", - patch(file, source) { - const framework = frameworks.find((name) => adapterFile(name) === file); - if (!framework) return source; - const definitions = { - express: { factory: "createExpressReply", args: "req, res", raw: "{ req, res }", target: "res", - status: "this.#target.status?.(code);", - json: "this.__sent = true; this.#target.json?.(body);", - send: "this.__sent = true; this.#target.end?.(body);" }, - koa: { factory: "createKoaReply", args: "ctx", raw: "ctx", target: "ctx", - status: "this.#target.status = code;", - json: 'this.__sent = true; this.#target.type = "application/json"; this.#target.body = JSON.stringify(body);', - send: "this.__sent = true; this.#target.body = body;" }, - leizmweb: { factory: "createLeiReply", args: "ctx", raw: "ctx", target: "ctx.response ?? {}", - status: "this.#target.status?.(code);", - json: "this.__sent = true; this.#target.json?.(body);", - send: 'this.__sent = true; this.#target.setHeader?.("Content-Type", "text/plain; charset=utf-8"); this.#target.end?.(body);' }, - h3: { factory: "createH3Reply", args: "event", raw: "event", target: "event", - status: "this.#target.res.status = code;", - json: 'this.body = JSON.stringify(body) ?? ""; this.#target.res.headers.set("content-type", "application/json; charset=utf-8"); this.__sent = true;', - send: 'this.body = body; this.#target.res.headers.set("content-type", "text/plain; charset=utf-8"); this.__sent = true;' }, - }; - const d = definitions[framework]; - const start = source.indexOf(`function ${d.factory}(`); - const end = source.indexOf("\nexport const ", start); - assert(start >= 0 && end > start, "Reply factory boundaries not found"); - const implementation = `class SharedReply { - #target; - __sent = false; - constructor(raw, target) { this.raw = raw; this.#target = target; } - status(code) { ${d.status} return this; } - json(body) { ${d.json} } - send(body) { ${d.send} } - markSent() { this.__sent = true; } - } - function ${d.factory}(${d.args}) { return new SharedReply(${d.raw}, ${d.target}); } -`; - return source.slice(0, start) + implementation + source.slice(end); - }, - }, - hoist: { - frameworks: frameworks.slice(0, 3), - description: "Capture compiled schemas, requiredOneOf and onValidate at bind time; validate ctx directly.", - caveat: "Must retain existing hook binding semantics and all layered/requiredOneOf behavior.", - patch(file, source) { - if (!frameworks.slice(0, 3).map(adapterFile).includes(file)) return source; - source = replace(source, - "const checker = (ctx, next) => {\n const compiled = api.options.compiled;", - "const compiled = api.options.compiled;\n const requiredOneOf = api.options.requiredOneOf;\n const onValidate = erest.getHooks()?.onValidate;\n const checker = (ctx, next) => {"); - source = replace(source, - "compiled.validate({\n params: ctx.params,\n query: ctx.query,\n body: ctx.body,\n headers: ctx.headers,\n })", - "compiled.validate(ctx)"); - source = replace(source, " const requiredOneOf = api.options.requiredOneOf;\n", ""); - return replace(source, " const onValidate = erest.getHooks()?.onValidate;\n", ""); - }, - }, - assign: { - frameworks, - description: "Replace four object spreads for flat params with Object.assign.", - caveat: "Diagnostic only: Object.assign treats an own __proto__ key differently; not safe to ship unchanged.", - patch(file, source) { - if (!frameworks.map(adapterFile).includes(file)) return source; - const before = "{ ...layered.params, ...layered.query, ...layered.body, ...layered.headers }"; - assert.ok(source.includes(before)); - return source.replaceAll(before, "Object.assign({}, layered.params, layered.query, layered.body, layered.headers)"); - }, - }, - sync: { - frameworks, - description: "Avoid unconditional async typed-handler wrapper; resolve async results via a shared finish callback.", - caveat: "Check rejection, response schemas, envelope return bookkeeping and async onion middleware before shipping.", - patch(file, source) { - if (file !== "dist/lib/api.js") return source; - source = replace(source, "const wrappedHandler = async (ctx) => {", "const wrappedHandler = (ctx) => {"); - source = replace(source, "const resolved = result instanceof Promise ? await result : result;", "const finish = (resolved) => {"); - return replace(source, - "ctxExt.__returnValue = resolved;\n };", - "ctxExt.__returnValue = resolved;\n };\n if (result instanceof Promise) return result.then(finish);\n finish(result);\n };"); - }, - }, - headers: { - frameworks: ["h3"], - description: "Lazily materialize H3 ctx.headers on first access, cache the object and keep a setter.", - caveat: "Header snapshot timing/property descriptors differ; reject as a drop-in optimization without an API decision.", - patch(file, source) { - if (file !== adapterFile("h3")) return source; - return replace(source, "headers: Object.fromEntries(event.req.headers),", `get headers() { - const value = Object.fromEntries(event.req.headers); - Object.defineProperty(this, "headers", { value, writable: true, enumerable: true, configurable: true }); - return value; - }, - set headers(value) { - Object.defineProperty(this, "headers", { value, writable: true, enumerable: true, configurable: true }); - },`); - }, - }, -}; - -// A combined variant is generated only when explicitly requested after screening. -const definitions = { control: [], ...Object.fromEntries(Object.keys(changes).map((name) => [name, [name]])) }; -if (process.env.BENCH_COMBINE) definitions.combined = process.env.BENCH_COMBINE.split(","); - -for (const [name, patches] of Object.entries(definitions)) { - assert(patches.every((patch) => changes[patch]), "Unknown BENCH_COMBINE patch"); - const dir = resolve(destination, name); - mkdirSync(dir, { recursive: true }); - writeFileSync(resolve(dir, "package.json"), '{"type":"module"}\n'); - cpSync(resolve(root, "dist/lib"), resolve(dir, "dist/lib"), { recursive: true }); - for (const framework of frameworks) cpSync(resolve(root, `packages/erest-${framework}/dist`), resolve(dir, `packages/erest-${framework}/dist`), { recursive: true }); - const files = {}; - for (const file of Object.keys(baseline)) { - const original = readFileSync(resolve(root, file), "utf8"); - let source = patches.reduce((value, patch) => changes[patch].patch(file, value), original); - // Adapter package imports must use this runtime's core, rather than the root's self-reference. - if (frameworks.map(adapterFile).includes(file)) source = replace(source, 'from "erest"', 'from "../../../dist/lib/index.js"'); - writeFileSync(resolve(dir, file), source); - files[file] = { baseline: baseline[file], candidate: hash(source) }; - } - variants[name] = { - runtimeRoot: relative(root, dir), - frameworks: patches.length === 1 ? changes[patches[0]].frameworks : frameworks, - patches, - descriptions: patches.length ? patches.map((patch) => changes[patch].description) : ["Unchanged compiled runtime snapshot; control for loading an isolated copy."], - caveats: patches.map((patch) => changes[patch].caveat), - files, - }; -} -const manifest = { - commit: execFileSync("git", ["rev-parse", "HEAD"], { cwd: root, encoding: "utf8" }).trim(), - prepareSha256: hash(readFileSync(fileURLToPath(import.meta.url))), - baseline, - variants, -}; -const output = resolve(destination, "../manifest.json"); -writeFileSync(output, `${JSON.stringify(manifest, null, 2)}\n`); -console.log(output); diff --git a/benchmarks/experiments/report.mjs b/benchmarks/experiments/report.mjs deleted file mode 100644 index 45737eb..0000000 --- a/benchmarks/experiments/report.mjs +++ /dev/null @@ -1,103 +0,0 @@ -// Bundle exploratory raw measurements and paired comparisons into one JSON + HTML. -import assert from "node:assert/strict"; -import { readFileSync, writeFileSync, existsSync } from "node:fs"; -import { resolve } from "node:path"; -import { createHash } from "node:crypto"; - -const inputs = process.argv.slice(2); -assert(inputs.length, "Pass screening and/or confirmation JSON paths"); -const loaded = inputs.map((input) => ({ input, data: JSON.parse(readFileSync(resolve(input), "utf8")) })); -const sourceBundle = loaded.find(({ data }) => Array.isArray(data.stages))?.data; -const runs = loaded.flatMap(({ input, data }) => Array.isArray(data.stages) - ? data.stages.map((stage) => ({ input: stage.input, raw: stage.raw })) - : [{ input, raw: data }]); -const median = (values) => { - const sorted = values.toSorted((a, b) => a - b); - const i = Math.floor(sorted.length / 2); - return sorted.length % 2 ? sorted[i] : (sorted[i - 1] + sorted[i]) / 2; -}; -const metrics = { - rps: (s) => s.rps, - cpuUs: (s) => s.serverCpuUsPerRequest, - meanMs: (s) => s.latencyMs.mean, - p95Ms: (s) => s.latencyMs.p95, - rssMiB: (s) => s.serverRssMiB, - heapMiB: (s) => s.serverRetainedHeapMiB, - clientCpu: (s) => s.clientCpuPercent, -}; -const stages = runs.map(({ input, raw }) => { - assert(raw.finishedAt, `Incomplete run: ${input}`); - assert(raw.samples.every((s) => s.errors === 0), `Errors in ${input}`); - const groups = []; - const comparisons = []; - const grouped = Map.groupBy(raw.samples, (s) => `${s.framework}/${s.scenario}/${s.concurrency}/${s.mode}`); - for (const samples of grouped.values()) { - assert.equal(samples.length, raw.config.rounds, "Missing rounds"); - assert.equal(new Set(samples.map((s) => s.round)).size, raw.config.rounds, "Duplicate rounds"); - const first = samples[0]; - groups.push({ framework: first.framework, scenario: first.scenario, concurrency: first.concurrency, mode: first.mode, - rounds: samples.length, errors: 0, - ...Object.fromEntries(Object.entries(metrics).map(([name, getter]) => [name, median(samples.map(getter))])), - }); - } - for (const group of groups.filter((g) => !["erest", "native-zod"].includes(g.mode))) { - const candidates = grouped.get(`${group.framework}/${group.scenario}/${group.concurrency}/${group.mode}`); - const baseline = grouped.get(`${group.framework}/${group.scenario}/${group.concurrency}/erest`); - const isolated = grouped.get(`${group.framework}/${group.scenario}/${group.concurrency}/control`); - assert(baseline, "No erest control"); - const pairs = candidates.map((candidate) => { - const control = baseline.find((b) => b.round === candidate.round); - assert(control, "Unpaired sample"); - return { round: candidate.round, throughputPercent: (candidate.rps / control.rps - 1) * 100, - cpuUsDelta: candidate.serverCpuUsPerRequest - control.serverCpuUsPerRequest, - p95MsDelta: candidate.latencyMs.p95 - control.latencyMs.p95, - rssMiBDelta: candidate.serverRssMiB - control.serverRssMiB, - heapMiBDelta: candidate.serverRetainedHeapMiB - control.serverRetainedHeapMiB }; - }); - const isolatedGains = isolated && group.mode !== "control" ? candidates.map((candidate) => { - const control = isolated.find((sample) => sample.round === candidate.round); - assert(control, "Unpaired isolated control"); - return (candidate.rps / control.rps - 1) * 100; - }) : null; - comparisons.push({ framework: group.framework, scenario: group.scenario, concurrency: group.concurrency, mode: group.mode, - versusIsolatedControl: isolatedGains ? { medianGainPercent: median(isolatedGains), minGainPercent: Math.min(...isolatedGains), maxGainPercent: Math.max(...isolatedGains), values: isolatedGains } : null, - medianGainPercent: median(pairs.map((p) => p.throughputPercent)), - minGainPercent: Math.min(...pairs.map((p) => p.throughputPercent)), - maxGainPercent: Math.max(...pairs.map((p) => p.throughputPercent)), - medianCpuUsDelta: median(pairs.map((p) => p.cpuUsDelta)), - medianP95MsDelta: median(pairs.map((p) => p.p95MsDelta)), - medianRssMiBDelta: median(pairs.map((p) => p.rssMiBDelta)), - medianHeapMiBDelta: median(pairs.map((p) => p.heapMiBDelta)), - allRoundsPositive: pairs.every((p) => p.throughputPercent > 0), pairs, - }); - } - return { input, raw, groups, comparisons }; -}); -const profilePath = resolve("benchmarks/results/experiments/profiles-summary.json"); -const checksPath = resolve("benchmarks/results/experiments/headers-check.json"); -const findingsPath = resolve("benchmarks/results/experiments/findings.json"); -const output = resolve(process.env.EXPERIMENT_OUT || "benchmarks/results/mac-optimization"); -const savedFindings = sourceBundle ? sourceBundle.findings : existsSync(findingsPath) ? JSON.parse(readFileSync(findingsPath, "utf8")) : null; -const inputSha256 = stages.map((stage) => createHash("sha256").update(JSON.stringify(stage.raw)).digest("hex")); -const bundle = { generatedAt: new Date().toISOString(), - method: "Compare candidate to erest control within the same round, framework, scenario and concurrency. Profile runs are excluded from performance comparisons. Paired ranges are not confidence intervals.", - profiles: sourceBundle ? sourceBundle.profiles : existsSync(profilePath) ? JSON.parse(readFileSync(profilePath, "utf8")) : null, - headerChecks: sourceBundle ? sourceBundle.headerChecks : existsSync(checksPath) ? JSON.parse(readFileSync(checksPath, "utf8")) : null, - findings: savedFindings && JSON.stringify(savedFindings.inputSha256) === JSON.stringify(inputSha256) ? savedFindings : null, - stages }; -writeFileSync(`${output}.json`, `${JSON.stringify(bundle, null, 2)}\n`); -const escape = (value) => String(value).replaceAll("&", "&").replaceAll("<", "<").replaceAll('"', """); -const number = (value, digits = 2) => Number(value).toFixed(digits); -const signed = (value, digits = 2) => `${value >= 0 ? "+" : ""}${number(value, digits)}`; -const findingsHtml = bundle.findings ? `

      结论与下一步

        ${bundle.findings.items.map((item) => `
      • ${escape(item)}
      • `).join("")}
      ` : ""; -const sections = stages.map((stage) => `

      ${escape(stage.input)}

      -

      ${stage.raw.samples.length} 次采样 · ${stage.raw.config.rounds} 轮 · 预热 ${stage.raw.config.warmupMs / 1000}s / 测量 ${stage.raw.config.durationMs / 1000}s · ${escape(stage.raw.environment.node)} · ${escape(stage.raw.environment.cpu)}

      -

      提交 ${escape(stage.raw.commit)};全部 ${stage.raw.samples.reduce((sum, s) => sum + s.requests, 0).toLocaleString("en-US")} 次计时区间请求错误为 0。

      -
      -${stage.comparisons.map((c) => ``).join("")} -
      框架变体吞吐配对中位变化轮间范围CPU μs/请求变化P95 ms 变化RSS MiB 变化GC 后堆 MiB 变化
      ${escape(c.framework)}${escape(c.mode)}${signed(c.medianGainPercent)}%${signed(c.minGainPercent)}% ~ ${signed(c.maxGainPercent)}%${signed(c.medianCpuUsDelta, 3)}${signed(c.medianP95MsDelta, 3)}${signed(c.medianRssMiBDelta)}${signed(c.medianHeapMiBDelta, 3)}

      各组指标中位数

      -${stage.groups.map((g) => ``).join("")} -
      框架变体req/sCPU μs/请求P95 ms客户端 CPU %RSS MiBGC 后堆 MiB
      ${escape(g.framework)}${escape(g.mode)}${number(g.rps, 0)}${number(g.cpuUs, 3)}${number(g.p95Ms, 3)}${number(g.clientCpu, 1)}${number(g.rssMiB)}${number(g.heapMiB)}
      实验实现和兼容性限制
      ${escape(JSON.stringify(stage.raw.experiments?.variants ?? {}, null, 2))}
      `).join(""); -writeFileSync(`${output}.html`, `erest 优化探索

      erest HTTP 优化探索

      每个候选与同轮 erest 对照比较;正吞吐变化表示更快,负 CPU 变化表示每请求更省 CPU。范围反映轮间波动,并非置信区间。诊断变体可能改变语义,兼容性限制见每轮实验清单。CPU profile 仅用于定位,没有混入收益比较。

      客户端接近一个逻辑核时可能限制吞吐;RSS 为 V8 运行时快照,不能单凭该值推断内存泄漏。结果仅适用于此请求模型。

      ${findingsHtml}${sections}`); -console.log(JSON.stringify(stages.map((stage) => ({ input: stage.input, comparisons: stage.comparisons.map(({pairs, ...rest}) => rest) })), null, 2)); -console.log(`Saved ${output}.json and ${output}.html`); diff --git a/benchmarks/experiments/summarize-profiles.mjs b/benchmarks/experiments/summarize-profiles.mjs deleted file mode 100644 index 3d7d8d3..0000000 --- a/benchmarks/experiments/summarize-profiles.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import { readFileSync, readdirSync, writeFileSync } from "node:fs"; -import { resolve, relative } from "node:path"; -import { fileURLToPath } from "node:url"; -import { createHash } from "node:crypto"; - -const directory = resolve(process.argv[2] || "benchmarks/results/experiments/profiles"); -const runPath = resolve(process.argv[3] || "benchmarks/results/experiments/profile-run.json"); -const source = readFileSync(runPath); -const run = JSON.parse(source); -const sha256 = (value) => createHash("sha256").update(value).digest("hex"); -const profiles = readdirSync(directory).filter((name) => name.endsWith(".cpuprofile")).map((file) => { - const source = readFileSync(resolve(directory, file)); - const profile = JSON.parse(source); - const nodes = new Map(profile.nodes.map((node) => [node.id, node.callFrame])); - const cutoff = Math.max(0, profile.timeDeltas.reduce((sum, delta) => sum + delta, 0) - run.config.durationMs * 1000); - const counts = new Map(); - let elapsed = 0, total = 0; - for (let i = 0; i < profile.samples.length; i++) { - const delta = profile.timeDeltas[i]; - elapsed += delta; - if (elapsed < cutoff) continue; - total += delta; - const frame = nodes.get(profile.samples[i]); - const location = frame.url.startsWith("file:") ? relative(process.cwd(), fileURLToPath(frame.url)) : frame.url; - const key = JSON.stringify({ function: frame.functionName || "(anonymous)", source: location, line: frame.lineNumber + 1 }); - counts.set(key, (counts.get(key) || 0) + delta); - } - return { file, sha256: sha256(source), frames: [...counts].sort((a, b) => b[1] - a[1]).slice(0, 25).map(([key, duration]) => ({ ...JSON.parse(key), percent: duration / total * 100 })) }; -}); -const summary = { commit: run.commit, environment: run.environment, config: run.config, profileRunSha256: sha256(source), summarizerSha256: sha256(readFileSync(fileURLToPath(import.meta.url))), - window: `Last ${run.config.durationMs}ms of each profile, including stop/forced GC/exit. Sampled self time is approximate and cannot isolate allocations or prove causality. Profile timings are excluded from optimization comparisons.`, profiles }; -const output = resolve(directory, "../profiles-summary.json"); -writeFileSync(output, `${JSON.stringify(summary, null, 2)}\n`); -console.log(output); diff --git a/benchmarks/run.mjs b/benchmarks/run.mjs index 3e236d8..96b19d2 100644 --- a/benchmarks/run.mjs +++ b/benchmarks/run.mjs @@ -40,14 +40,6 @@ assert( assert(!config.serverCpu || process.platform === "linux", "BENCH_SERVER_CPU uses Linux taskset; omit it on macOS"); const destination = resolve(root, process.env.BENCH_OUT || "benchmarks/results/latest.json"); mkdirSync(dirname(destination), { recursive: true }); -const experiments = process.env.BENCH_VARIANTS_FILE - ? JSON.parse(readFileSync(resolve(process.env.BENCH_VARIANTS_FILE), "utf8")) - : null; -const selectedVariants = experiments - ? list("BENCH_VARIANTS", Object.keys(experiments.variants).join(",")) - : []; -assert(selectedVariants.every((name) => experiments.variants[name]), "Unknown BENCH_VARIANTS value"); -if (process.env.BENCH_PROFILE_DIR) mkdirSync(resolve(process.env.BENCH_PROFILE_DIR), { recursive: true }); function read(filePath) { try { return readFileSync(filePath, "utf8").trim(); @@ -97,7 +89,6 @@ const result = { ), }, config, - ...(experiments ? { experiments, selectedVariants } : {}), samples: [], }; function save() { @@ -127,17 +118,12 @@ function message(child, type, send) { }); } async function sample(framework, scenario, concurrency, mode, round) { - const variant = experiments?.variants[mode]; - const profileArgs = process.env.BENCH_PROFILE_DIR - ? ["--cpu-prof", `--cpu-prof-dir=${resolve(process.env.BENCH_PROFILE_DIR)}`, `--cpu-prof-name=${framework}-${scenario}-c${concurrency}-${mode}-r${round}.cpuprofile`] - : []; - assert(!config.serverCpu || !profileArgs.length, "Use profiling separately from CPU affinity runs"); - const child = fork(resolve(root, "benchmarks/server.mjs"), [framework, variant ? "erest" : mode, scenario], { + const child = fork(resolve(root, "benchmarks/server.mjs"), [framework, mode, scenario], { cwd: root, ...(config.serverCpu ? { execPath: "/usr/bin/taskset", execArgv: ["-c", config.serverCpu, process.execPath, "--expose-gc"] } - : { execArgv: ["--expose-gc", ...profileArgs] }), - env: { ...process.env, BENCH_RUNTIME_ROOT: variant ? resolve(root, variant.runtimeRoot) : "", NODE_ENV: "production", DEBUG: "" }, + : { execArgv: ["--expose-gc"] }), + env: { ...process.env, NODE_ENV: "production", DEBUG: "" }, stdio: ["ignore", "ignore", "inherit", "ipc"], }); try { @@ -201,9 +187,8 @@ for (let round = 1; round <= config.rounds; round++) { const offset = (round - 1) % config.frameworks.length; for (const framework of [...config.frameworks.slice(offset), ...config.frameworks.slice(0, offset)]) { for (const scenario of config.scenarios) { - const modes = experiments - ? ["native-zod", "erest", ...selectedVariants.filter((name) => experiments.variants[name].frameworks.includes(framework))] - : scenario === "get" + const modes = + scenario === "get" ? ["native", "erest"] : scenario === "io5" ? ["native-zod", "erest"] diff --git a/benchmarks/server.mjs b/benchmarks/server.mjs index bee4dca..0bd9811 100644 --- a/benchmarks/server.mjs +++ b/benchmarks/server.mjs @@ -2,15 +2,9 @@ import { createServer } from "node:http"; import { performance } from "node:perf_hooks"; import { setTimeout as delay } from "node:timers/promises"; -import { resolve } from "node:path"; -import { pathToFileURL } from "node:url"; import { expectedGet, output, schemas, validate } from "./fixture.mjs"; const [framework, mode, scenario] = process.argv.slice(2); -const runtimeRoot = process.env.BENCH_RUNTIME_ROOT - ? pathToFileURL(`${resolve(process.env.BENCH_RUNTIME_ROOT)}/`) - : new URL("../", import.meta.url); -const runtime = (path) => new URL(path, runtimeRoot).href; const isGet = scenario === "get"; const method = isGet ? "get" : "post"; const route = isGet ? "/ping" : "/users/:id"; @@ -31,7 +25,7 @@ if (framework === "express") { router = app; server = createServer(app); if (mode === "erest") { - const mod = await import(runtime("packages/erest-express/dist/index.js")); + const mod = await import("../packages/erest-express/dist/index.js"); adapter = new mod.ExpressAdapter(); } else { router[method]( @@ -52,7 +46,7 @@ if (framework === "express") { router = new Router(); app.use(bodyParser()); if (mode === "erest") { - const mod = await import(runtime("packages/erest-koa/dist/index.js")); + const mod = await import("../packages/erest-koa/dist/index.js"); adapter = new mod.KoaAdapter(); } else { const input = (ctx) => checked({ params: ctx.params, query: ctx.query, body: ctx.request.body }); @@ -71,7 +65,7 @@ if (framework === "express") { router = new Router(); app.use("/", component.bodyParser.json()); if (mode === "erest") { - const mod = await import(runtime("packages/erest-leizmweb/dist/index.js")); + const mod = await import("../packages/erest-leizmweb/dist/index.js"); adapter = new mod.LeizmWebAdapter(); } else { router[method]( @@ -91,7 +85,7 @@ if (framework === "express") { app = new H3({ silent: true }); router = app; if (mode === "erest") { - const mod = await import(runtime("packages/erest-h3/dist/index.js")); + const mod = await import("../packages/erest-h3/dist/index.js"); adapter = new mod.H3Adapter(); } else { const send = (event, result) => { @@ -120,7 +114,7 @@ if (framework === "express") { } if (mode === "erest") { - const { ERest } = await import(runtime("dist/lib/index.js")); + const { ERest } = await import("../dist/lib/index.js"); const service = new ERest({ info: { basePath: "" }, groups: { bench: "Benchmark" }, docs: { markdown: false } }); const api = service.api[method](route).group("bench"); if (isGet) api.register((ctx) => ctx.reply.json(expectedGet));