# Reproducible benchmark evidence > **Historical TP 0.3 benchmark snapshot; obsolete for TP 1.0.** These results measure the removed managed stack, `tp-text`, layer registry, scan-driven renderer, and 0.3 benchmark runner. They are preserved as historical evidence only and are neither TP 1.0 performance baselines nor current release gates. Current runtime structure and verification expectations are documented in the [README](../README.md), [current architecture](ARCHITECTURE.md), and [API contract](API-SEMANTICS.md). ## Command and environment ```sh make benchmark \ EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs \ LOAD_EXTRA='-L /tmp/tp-elpa.Ur243x/dash-2.20.0' ``` - Emacs: 30.2 - Fixed seeds: `1`, `7`, `42`, `747555` - Reproducible generated seed: `8675309` - Every scenario performs a correctness assertion before accepting timing. - The full command completed successfully on 2026-07-28. The runner is `tp-benchmark.el`; `make benchmark` is the stable entry point. Output rows include scenario, status, fixture, seed, requested/actual size, operations, scanned/changed/refreshed counts, elapsed wall time, and GC count. ## Representative result: seed 42 | Scenario | Requested / actual | Operations | Scanned | Changed | Refreshed | Elapsed (s) | GC | | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | large text | 100,000 | 2 | 100,000 | 100,000 | 0 | 0.000304 | 0 | | large text | 1,000,000 | 2 | 1,000,000 | 1,000,000 | 0 | 0.000323 | 0 | | fragmented intervals | 1,000 | 1 | 1,000 | 500 | 0 | 0.044254 | 0 | | fragmented intervals | 10,000 | 1 | 10,000 | 5,000 | 0 | 0.404836 | 1 | | fragmented intervals | 50,000 | 1 | 50,000 | 25,000 | 0 | 1.965066 | 3 | | stack depth | 1 | 2 | 2,000 | 2,000 | 0 | 0.000909 | 0 | | stack depth | 5 | 6 | 2,000 | 2,000 | 0 | 0.003204 | 0 | | stack depth | 20 | 21 | 2,000 | 2,000 | 0 | 0.012905 | 0 | | stack depth | 50 | 51 | 2,000 | 2,000 | 0 | 0.037830 | 0 | | reactive fan-out | 1 / 1 | 1 | 1 | 1 | 1 | 0.000763 | 0 | | reactive fan-out | 10 / 10 | 1 | 10 | 10 | 10 | 0.005469 | 0 | | reactive fan-out | 100 / 100 | 1 | 100 | 100 | 100 | 0.051376 | 0 | | reactive fan-out | 500 / 200 | 1 | 200 | 200 | 200 | 0.102989 | 0 | | theme refresh | 1 / 1 | 1 | 1,000 | 0 | 1 | 0.001317 | 0 | The 500-buffer fan-out fixture is intentionally capped at 200 live buffers on local hardware; output reports both requested and actual counts. Theme refresh uses the v1 conservative managed-range strategy. ## Interpretation These figures are advisory, not release thresholds. Fragmented interval count is the clearest scaling risk and should remain the first optimization target. Large-text lookup over one property run and deep-stack top lookup are cheap in this fixture, but those results must not be generalized to fragmented text or repeated stack mutation.