一键导入
benchmark
The @typia/benchmark runner, fixtures, and per-CPU result archive. Read before running, modifying, or publishing benchmark results.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
The @typia/benchmark runner, fixtures, and per-CPU result archive. Read before running, modifying, or publishing benchmark results.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
What typia is, the package family, the JS-descriptor / Go-plugin boundary, the workspace layout, and the canonical commands.
Work rules, testing, validation, and change integrity. Read before writing or modifying code.
READMEs and the website guides. Read before writing or modifying docs.
GitHub issue triage, .wiki handoff updates, branch-per-issue implementation, mandatory Research Review Round, CI gating, PR comments, and issue closure. Read before sweeping issues or running the issue-to-PR loop.
Multi-agent workflows — Review Cycle, Discussion, and Research Review Round. Read the Briefing subagents rule before delegating to any subagent; read a mode in full only when the user asks for it by name.
PR submission flow and the release reference. Read only when the user explicitly asks for a pull request; never open, push, or propose a PR on your own initiative.
| name | benchmark |
| description | The @typia/benchmark runner, fixtures, and per-CPU result archive. Read before running, modifying, or publishing benchmark results. |
Read before running, modifying, or publishing benchmark results. The benchmark is the private @typia/benchmark workspace under benchmark/.
Throughput (MB/sec) of typia against competing libraries, across the canonical structure fixtures (ObjectSimple, ObjectHierarchical, ObjectRecursive, the union and array variants, UltimateUnion). src/index.ts drives ten categories:
| Category | Operation | Compared against |
|---|---|---|
is | typia.is type guard (truthy path) | typebox, ajv, io-ts, zod, class-validator |
assert | typia.assert (throwing path) | same |
validate | typia.validate (error-collecting path) | same |
assert-error / validate-error | the same two on invalid input | same |
optimizer | optimized is codegen | typebox, class-validator |
stringify | typia.json.*Stringify | fast-json-stringify, JSON.stringify, class-transformer |
server-assert / server-stringify / server-performance | request/response cost in a real server | Express and Fastify, typia vs pure vs class-transformer |
Each program wraps an operation in a benchmark Suite; BenchmarkServer runs programs in tgrid worker processes; BenchmarkReporter writes the markdown report and HorizontalBarChart renders the D3 SVGs.
pnpm template # regenerate src/programs/ from src/template/*.ts, then format + build
pnpm build # ttsc build → bin/ (tsconfig applies the typia transform plugin)
pnpm start # node bin/ → writes results for this machine
pnpm start:bun # bun bin/bun.js → Bun-runtime results
pnpm start keys the output directory off os.cpus()[0].model, so a run writes to benchmark/results/<your CPU model>/ — README.md (the report: host metadata, one section per category with a table and an SVG) plus images/*.svg. A Bun run lands under benchmark/results/<CPU>/bun/.
src/programs/ is generated. It is produced by pnpm template from src/template/*.ts (one template module per category). Don't hand-edit src/programs/; to add a library or category, edit the matching template module, then regenerate. The benchmark carries its own fixtures under src/structures/ (it does not import @typia/template), so add or change shapes there.results/<CPU model>/ directory is one machine's committed report. A new machine adds a new directory; don't overwrite another machine's results with yours. The markdown tables and SVGs are the published artifact (no JSON is kept in results/).src/structures/<library>/; the template that generates that category's programs must reference them. Keep the structure set identical across libraries so a row compares like for like.