Repository navigation
Performance docs from three-machine sweeps; fix C's timer on macOS - #51
Merged
Merged
Conversation
C's profiler (system/profiler_timer.c) reads the clock on macOS with three Mach calls (host_get_clock_service, clock_get_time, mach_port_deallocate), about 1.3 us per alignment inside the timed interval. That made C look ~6x slower on 150 bp reads and 20-25% slower on 1 kb fast modes, so M2 Rust/C ratios were too optimistic. On macOS the build now uses clock_gettime, as on Linux (macOS 10.12+); alignments are unchanged (differential core and biwfa suites identical). Cached C builds are now stamped with a recipe number and rebuilt when it changes, so existing unpatched builds are not reused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The README's tables were from the initial port (2026-03: Broadwell and Apple M-series, one dataset). They are replaced by a summary of bench/sweep.py runs at fc51088 on an Apple M2 Pro, an AMD EPYC 7713 and an Intel Xeon Gold 6150 (301 cases each, output identical to C everywhere), with known gaps. docs/performance.md has the method, datasets and full tables, pinned to fc51088 and C 3282f83. bench/report.py generates the tables from sweep output directories. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
These are largely documentation or documentation-related changes, so merging. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #31.
1.
build_c.sh: C's timer on macOS (760e943)system/profiler_timer.c) reads the clock on macOS with three Mach calls, about 1.3 µs per alignment inside the timed interval.m1k_5edit score: 113.5 → 91.5 ms).clock_gettime, as on Linux. The build fails rather than silently skipping the patch if the C source no longer matches.2. Performance docs (
032646b,d1ed0f9)bench/sweep.pyruns atfc51088on an Apple M2 Pro, an AMD EPYC 7713 and an Intel Xeon Gold 6150. Each machine ran 301 cases, and output is identical to C everywhere. The summary also lists the known gaps:docs/performance.md: the method, builds, datasets and full tables (by group, per algorithm, peak memory, overall), plus notes and how to reproduce. It's pinned tofc51088and C3282f83.bench/report.py: generates those tables from any set of sweep output directories..claude/PLAN.mdare updated for the new files.The underlying data and the Xeon profile are posted in #31.
🤖 Generated with Claude Code