XPerf
LanguagesC++

cppperf corpus targets

Large trees are not vendored, and the corpus is not shipped with the repo: clone it into any local directory outside the repo and pass that path to the linter. Lint with:

cd packages/cppperf/cppperf-lint && make
./cppperf-lint <corpus-dir>/<name> --format json --no-fail

Checker is C++17 (cppperf-lint). Active rules: cx-regex-ctor-hot, cx-endl-hot, cx-clock-hot, cx-ifstream-hot, cx-const-by-value, cx-vector-bool. cx-string-append-unreserved was removed (about 1.09×). Rules added in 2026-10-23 are hint and not part of the corpus verdict below. Removed (jitter): CX001/CX003/CX004.

Pins

Cloned 2026-10-21 (Asia/Shanghai); lint counts r1 → r2 → r3 (redesign).

TreeCommitSizeLint (baseline → r1 → r2 → r3)
jsonef3d350 shallow https://github.com/nlohmann/json.git91M4 → 0 → 0 → 0
fmt0fc3163 shallow https://github.com/fmtlib/fmt.git4.5M49 → 11 → 3 → 0
spdlog76d4580 shallow https://github.com/gabime/spdlog.git2.3M25 → 4 → 1 → 3 (CX004)

Path skips: test/, tests/, Tests/, third_party/, thirdparty/, benchmarks/, benchmark/, bench/, examples/, example/, docs/, gtest/, gmock/, doctest/, bundled/, plus existing .git / vendor / build.

G3 TP/FP triage (2026-10-22 Asia/Shanghai)

Stagen sampleTPFPOK-idiomFP+DOC+SKIPcorpus-ready?
r1150%20%80%20%no
r240%0%100%0%no (OK-idiom / no TP)
r3 (CX004)3100%0%0%0%yes

r2→r3: demote CX001–CX003 → off; add CX004 (hint). spdlog 1→3 honest TP. Severity: CX004 hint (no G4 JSONL). CX001, CX003 and CX004 were retired later the same day under jitter control (see rule-ids.md); the tables above are history.

Inventory

<corpus-dir>/
  json/
  fmt/
  spdlog/

Do not commit corpus sources into packages/cppperf.

2026-10-23 — new hint rules, not triaged

The slugs below are hint. They have not been through G2/G3. The 2026-10-22 corpus-ready verdict does not cover them.

  • cx-clock-hot has JSONL (about 147× vs sampling once) and stays hint.