diff --git a/docs/PERFORMANCE.md b/docs/PERFORMANCE.md index bc5be2a..6f8ca4b 100644 --- a/docs/PERFORMANCE.md +++ b/docs/PERFORMANCE.md @@ -45,3 +45,21 @@ Baseline measured on production on 2026-10-02, before this change: longest run 6,845 samples; median of three internal authenticated requests: dashboard HTML 8 ms, run HTML 156 ms, run JSON 213 ms / 2,654 KiB uncompressed. These timings exclude network transfer, browser rendering and map tile downloads. + +After deployment and backfill on 2026-10-02: all 19 activities at analysis version +1; rerun processed zero rows. Same longest run retained 6,845 raw samples and +used 1,001 display route points. Persisted summary exactly matched a fresh +full-resolution calculation. Median of three internal authenticated requests: + +| Response | Server time | Uncompressed size | +| --- | ---: | ---: | +| Dashboard HTML | 9 ms | 27 KiB | +| Longest run HTML | 8 ms | 16 KiB | +| Longest run JSON | 29 ms | 313 KiB | +| Longest run route-only JSON | 7 ms | 23 KiB | + +Page and JSON requests issued zero raw sample/lap queries. HTTPS health returned +HTTP 200 and `status: ok`; Dokku web and sync worker startup checks succeeded. +The synthetic browser fixture verified dashboard replay, route colour switching +and charts. Its in-memory SQLite server uses one request thread to avoid concurrent +access to the shared SQLite connection. diff --git a/scripts/preview-fixture.py b/scripts/preview-fixture.py index 891a6fd..da63687 100644 --- a/scripts/preview-fixture.py +++ b/scripts/preview-fixture.py @@ -83,4 +83,4 @@ def preview_login(): if __name__ == "__main__": - serve(app, host="127.0.0.1", port=5001) + serve(app, host="127.0.0.1", port=5001, threads=1)