No reviewers
Labels
No labels
area: build
area: ci
area: compare
area: data
area: engine
area: model
area: provenance
area: rite
area: validation
backport
blocked
breaking
confirmed
dependencies
duplicate
epic
github_actions
invalid
needs-info
needs-triage
php
priority: high
priority: low
priority: medium
regression
type: bug
type: chore
type: correction
type: docs
type: enhancement
type: feature
type: fix
type: perf
type: refactor
type: security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Directorium/Core!474
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/94-performance"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
Epic #94 — performance hardening. Resolution was already fast — the caches exist (Corpus parses each file once per process;
resolvedYear()memoises per year/calendar/edition;PaschalSkeletoncaches its offset table) — so this epic makes that performance measurable, invalidatable, and proven byte-stable, rather than adding speculative optimisation.#95 — benchmark + budget
bin/benchmark.phpmeasures the four paths the Api exercises at volume against a documented budget (docs/performance.md). Measured on a dev machine (median of 5, leap year 2024):Far under budget with headroom for slow runners. The
year-rangefigure staying flat proves the process-wide corpus cache is reused. Not a CI gate (shared-runner timing is noisy) — byte-stability is what CI enforces.#96 — cache-loaded-once + invalidation + correctness
docs/performance.md.Corpus::flush()— drops the process-wide parsed-corpus caches; the data-version invalidation hook for a long-lived process (the Api otherwise rolls versions by starting fresh workers).CacheConsistencyTestresolves a full year warm, callsflush(), resolves it cold, and asserts the two are byte-identical (sha256 over every day's contract) for 1962 and 1954 — proving the cache never changes output.Verification
lint✅ ·analyse✅ ·test✅ 1030 tests (+3). The full suite passing after the flush test runs confirmsflush()breaks nothing.php bin/benchmark.php✅ exit 0.flush()is a new additive method; goldens byte-identical.Closes #95, closes #96.