Skip to content

docs: performance campaign design and tools/perfinventory - #26

Merged
tannevaled merged 2 commits into
mainfrom
docs/performance-campaign
Nov 7, 2026
Merged

tannevaled merged 2 commits into
mainfrom
docs/performance-campaign

Conversation

@tannevaled

Copy link
Copy Markdown
Contributor

Design of the performance campaign for the go-scikit stack: prove every public function at least as fast as its reference on one core, and plan the go-simd / go-asmgen work that closes the gaps. No optimisation code.

  • docs/performance-campaign.md: rules, inventory, existing harnesses, the proposed shared tool (go-scikit/refbench, to be created with ghnew), kernels K1-K8 and go-asmgen extensions A1-A4, waves W0-W4, issue filing.
  • tools/perfinventory: the Go program behind the inventory (go/packages, type-resolved uses; 100 % coverage). Result on the 14 repositories: 2081 public functions, 234 timed against a reference by Go code, 131 timed by a benchmark paired by an outside script, 53 timed alone, 1663 not timed.
  • One line in COVERAGE.md and README.

Findings worth a look: go-ndarray carries its own copies of kernels go-simd/floats has (Mul, pairwise Sum, Max/Min, Dot, Clip); special/dd and stats/internal/dd are the same package twice; go-ndarray's perf page compares multicore Go with single-threaded NumPy 2.2.4; special's scalar loop is 0.19x-0.40x SciPy on one core.

🤖 Generated with Claude Code

tannevaled and others added 2 commits November 7, 2026 20:20
Loads every module of a repository with its tests through go/packages and
classes each exported function and method of the public packages as ref
(timed, the file's code names a reference), noted (timed, the reference is
only in comments), bench (timed alone) or none. Counts the non-Go timing
scripts beside them. docs/performance-campaign.md quotes its output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ls, waves)

docs/performance-campaign.md: the rules (one core, same data, same
statistic, interleaved rounds, load gate, verdict, parity classes); the
inventory from tools/perfinventory (2081 public functions, 234 timed
against a reference, 1663 not timed); the harnesses that exist and where
they break the rules; the proposed go-scikit/refbench library and CI mode;
the go-simd/floats kernels to add or move (K1-K8), the go-asmgen
extensions (A1-A4); the waves and how a slower row becomes an issue.
COVERAGE.md and README link it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tannevaled
tannevaled merged commit bfdd186 into main Nov 7, 2026
1 check passed
@tannevaled
tannevaled deleted the docs/performance-campaign branch November 7, 2026 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant