Skip to content

perf-callgrind: JVM vs clojure-rs per-namespace sweep with Bencher #1

Closed

Description

@m-hu

Mirror of snippet-repo T1211 (hhh-pa/clojure-code-snippet#37): a deterministic callgrind sweep over every test namespace, run under both JVM Clojure and clojure-rs, reporting callgrind_instructions + callgrind_allocated_bytes per benchmark to Bencher (same benchmark names, distinct testbeds).

Proven already:

  • Single-ns driver works under clojure-rs: alter *load-path* -> require -> clojure.test/run-tests prints the standard summary (Needs: avoid System/exit, unemulated — encode pass/fail in output/exception).
  • Recipe (valgrind flags, JVM -Xint+EpsilonGC, LD_PRELOAD alloc shim, BMF shape) ports from the snippet repo's scripts/ci/go/internal/measure.

Design deltas vs T1211 (spec to follow on the branch):

  • Benchmarks = 1351 test namespaces (not script x cases); driver driver.clj <ns>.
  • Correctness gate = SUMMARY line (:test/:pass/:fail/:error equal on both legs, zero fail/error) instead of full-stdout diff (namespaces print nondeterministically).
  • New Bencher project + BENCHER_API_KEY secret (admin step); new perf-callgrind workflow (shard x runtime matrix) + report-callgrind merge; test unchanged.

Session: gentle-menkar.

Activity

  1. added 3 commits that reference this issue on Nov 3, 2026
  2. m-hu commented on Nov 3, 2026

    @m-hu
    ContributorAuthor

    PR #2 (draft, branch m-hu:perf/1-callgrind) is up: spec at docs/1/specification.md, full implementation, both 1351-leg sweeps green locally. Draft until the BENCHER_API_KEY admin step lands.

    Session: gentle-menkar.

    AI-Tool: Muse Code 1.4.14-R7309.1 (Meta Muse Spark)

  3. added 3 commits that reference this issue on Nov 3, 2026
  4. m-hu commented on Nov 3, 2026

    @m-hu
    ContributorAuthor

    Session: gentle-menkar. Landing record: delivered by #3 (squash ab26ab9 onto main) — perf-callgrind JVM-vs-rs per-namespace sweep with Bencher tracking, green on CI + all 16 perf shards with uploads proven. Draft #2 superseded; follow-up flake in #4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions