XPerf
指南

XPerf 概览

XPerf 是各语言性能 kit 的总伞项目。每个 kit 可独立使用:一份有测量依据的指南、示例、fixtures,以及用该语言(或面向该语言)编写的启发式 linter。根目录放共享方法文档与跨 kit 的 smell 索引——不是「以 Zig 为主、其它语言外挂」的树。

架构

共享闭环(见 playbook.md):盘点 → 证据 → corpus lint → 反向优化 → dogfood → 文档。只有在成对 fixtures 并且 有测得的 before/after JSONL 时,严重级别才升为默认 error。

跨语言索引: smell-catalog.md 把同一类 smell 映射到各 kit。规则 ID 是 按 kit 的 slug;jsperf 与 jvmperf 都用 jp- 前缀但 slug 集合不相交(jsperf 的 jp-alloc-hot ≠ 任何 jvmperf 规则)。某一运行时上的 YES 不能直接搬到另一运行时——移植建议时请重新测。

各 kit 状态

截至 2026-10-22(Asia/Shanghai),全部 19 个 kit 已通过 AGENT.md 的 corpus-ready(G3)门槛。启发式 ≠ 保证加速。

KitLint 入口指南备注
zperfzperf-lint(Zig AST)英文 · corpus-readyG3/r4;默认开启的 TP 集;OK-idiom 大量 off;allocPrint-in-loop 为 hint
cperfcperf-lint(C11)英文 v0 · corpus-readycp-alloc / cp-realloc 为 error;strlen、热调用、wide-bool-flag、alloca-in-loop、大结构体按值传递为 hint;cp-printf / cp-strcat 为 off
jsperfjsperf-lint(纯 JS)英文 v0 + V8/启动 · corpus-readyjp-delete-array-hole 为 error;string+/map-filter/regex/JSON/DOM/readFile/clock 为 hint;alloc/delete-shape 为 off
jvmperfjvmperf-lint(Java)英文 · corpus-readyG3/G4 默认;JMH/JOL;STATIC-VS-HOTSPOT
goperfgoperf-lint(Go)英文 v0 · corpus-readyappend-nil / defer / regexp / JSON / reflect / open / clock 为 hint;make/string+/fmt 为 off
pyperfpyperf-lint(纯 Python)英文 v0 · corpus-readylist-plus 以及 JSON/deepcopy/open 为 hint;str+/print 为 off;re.compile 与 datetime-format 已移除
swiftperfswiftperf-lint(Swift PM)英文 v0 · corpus-readyreserve / map-joined hint,以及 date-formatter / JSON / regex / file-read / clock / value-for-key hint;无 SDK 时 text-lint 对等
arktsperfarktsperf-lint(纯 Node)英文 v0 · corpus-readyat-includes / at-json 为 hint;alloc/delete/console 为 off
cppperfcppperf-lint(C++17)英文 v0 · corpus-readyregex、endl、clock、ifstream、const-by-value、vector-bool 等 hint
csharpperfcsharpperf-lint(C#)英文 v0 · corpus-ready构建器 / 热 I/O / 热调用 hint
phpperfphpperf-lint(PHP)英文 v0 · corpus-ready字符串与数组重绑定 / echo hint
rubyperfrubyperf-lint(Ruby)英文 v0 · corpus-ready构建器 / 热 I/O / 热调用
rustperfrustperf-lint(Rust)英文 v0 · corpus-ready分配 / 字符串 / 热调用
kotlinperfkotlinperf-lint(Kotlin)英文 v0 · corpus-ready≠ jvmperf JMH;集合与字符串
objcperfobjcperf-lint(Objective-C)英文 v0 · corpus-ready≠ swiftperf;集合 / 字符串 / formatter
dartperfdartperf-lint(Dart)英文 v0 · corpus-readylist / string
luaperfluaperf-lint(Lua)英文 v0 · corpus-readytable / string
beamperfbeamperf-lint(Elixir/Erlang)英文 v0 · corpus-readylist / binary
nimperfnimperf-lint(Nim)英文 v0 · corpus-readyseq / string / I/O

命令与默认值见 kits.md;历史数字 ID → slug 见 rule-id-map.md。