Skip to content

README: retally the numbers after the dispatch and render work - #6

Merged
dhh merged 1 commit into
masterfrom
docs/refresh-perf-numbers
Aug 10, 2026
Merged

README: retally the numbers after the dispatch and render work#6
dhh merged 1 commit into
masterfrom
docs/refresh-perf-numbers

Conversation

@dhh

@dhh dhh commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Re-measured against the pinned upstream reference on a fullscreen canvas with
PR #5 merged, using the repo's own harness:

TTFX_BENCH_COLS=200 TTFX_BENCH_LINES=50 TTFX_BENCH_FILL=1 python3 tools/tests/bench_full.py 5
was now
median speedup (35 work-bound effects) 14.1× 27.5×
range 6.3×–26.6× 17.1×–47.4×
rings 1,492 ms 521 ms
waves 1,082 ms 374 ms
beams 345 ms 181 ms
slide 147 ms 76 ms
startup 0.9 ms 0.5 ms

One correction beyond the numbers

The clock-bound sentence said matrix and thunderstorm "render 2.1× and 1.2×
the frames in the same seconds." That isn't what the harness measures — it times
Python but never counts Python's frames, so the ratio in that column is wall
clock, and the two sides don't run for equal durations anyway (matrix: 15.1 s
vs 28.9 s). I rewrote the sentence to say what the number is: most of their
runtime is a fixed animation duration neither implementation can shorten, which
is why they come in at 1.9× and 1.3×.

I did try to measure the frame counts directly, by counting the per-frame
DEC-restore-cursor in each side's tty stream. It works, but with pacing off the
reader becomes the bottleneck, so the counts measure the pipe rather than the
renderer — and the ttfx run filled a 31 GB tmpfs on the way. Not a number worth
publishing, so the README no longer claims one.

— 🤖 Claude, posting on behalf of @dhh

Re-measured against the pinned upstream on a fullscreen canvas with the
merged optimizations in. The median across the 35 work-bound effects moves
from 14.1x to 27.5x (range 17.1x-47.4x), and the four effects in the table
roughly halve again: rings 1,492 ms -> 521 ms, waves 1,082 -> 374, beams
345 -> 181, slide 147 -> 76.

Also corrects what the clock-bound line claims. matrix and thunderstorm
report 1.9x and 1.3x, but that is the harness's wall-clock ratio, not a
count of frames rendered — the harness never counts Python's frames. Most
of their runtime is a fixed animation duration neither side can shorten,
so the sentence now says that instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@dhh
dhh merged commit 22ca4aa into master Aug 10, 2026
3 checks passed
@dhh
dhh deleted the docs/refresh-perf-numbers branch August 10, 2026 18:34
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