diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/README.md b/docs/benchmarks/2026-10-12/baseline-refresh/README.md new file mode 100644 index 00000000..584ba19c --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/README.md @@ -0,0 +1,304 @@ +# Quick-check baseline refresh on master `c317c7e4` and `969c49e2`, and one look at Lagan `features read` (@perf, 2026-10-12) + +Asked by the main session: refresh `docs/benchmarks/quick/baseline-ac.json` +(stored on increment 35's head `357808b1`, 2026-10-11, master `3e6f87eb` plus +increment 35) on master `c317c7e4`, after #230, #231 (36), #232 (26a), #233, +#234 and #235 (26b) merged; and look once at Lagan's `features read`, which +read +12 to +17 % against that baseline on the main session's three idle runs +of 2026-10-12 (`docs/increments/26-land-cover.md`, section 14). The refresh +rule: `docs/increments/perf-quick-check.md`, section 3, *The baseline*, (b). + +## Result in one paragraph + +Two quick checks on master this afternoon (15:19 and 15:30 local, AC) read +**every** case 6 to 15 % slower than the stored baseline, including +single-thread C++ refine on byte-identical meshes (`tile t=1 refine` +15.5 %) +and a `_core.so` byte-identical to the one the main session's idle run used +at 11:15 (SHA-256 `55bb3993…`, both built from `c317c7e4`). The machine was +in interactive use (load average 3 to 4.5, WindowServer at 30 % CPU; no video +call), and the same `.so` was within band on every phase but one at 12:10 UTC, +so these runs measure the machine, not master. **The record saved by run 2 is +kept here as `baseline-ac-candidate-loaded-1530.json`, not installed as the +baseline**: a baseline 6 to 15 % slow on unchanged code would hide a +regression of that size until the next refresh. Lagan `features read` is +**not a code change**: the baseline's own commit and `.so`, run back to back +with master, reads 1.107 s against master's 1.103 s (medians of 3), both +against 0.922 s stored; the profile shows the same call counts and times on +both trees. See *Lagan `features read`* below. The idle refresh: *Run 3* found no idle minute in +the afternoon; **the evening's *Run 4* did it** (20:29 local, idle, AC) and +installed the new baseline, and *Run 5* is increment 38's quick check against +it: `NO CHANGE`, every mesh identical. + +## Method + +- Tree: `/Users/skavhaug/projects/rasputin/.claude/worktrees/baseline-1012` + at `c317c7e4` (master), its own `build-bench` (Release, `-O3 -DNDEBUG`, + hardening ON, AppleClang 21.0.0) and its own `.venv`, pinned to the stored + baseline's machine record: Python 3.14.7, numpy 2.5.4, shapely 2.2.0 on + GEOS 3.14.1, pyproj 3.8.0 on PROJ 9.8.1 (`uv pip freeze` of the + `mapbiomas-26b` worktree's venv, `tin_engine` itself through `bench.py`'s + `pkg` tree). The main checkout's `.venv` has numpy 2.5.3 and would give + `NO BASELINE: machine numpy`. +- Command: `RASPUTIN_DATA=/Users/skavhaug/projects/rasputin_data + .venv/bin/python tools/bench_quick.py run [--save-baseline]`, run from the + worktree, nothing of ours beside it. Script version: `tools/bench_quick.py` + and `tools/bench.py` at `c317c7e4`. +- Machine: Apple M1 Max (8 P + 2 E cores, 32 GB), macOS 27.0. Power: AC, + battery 100 %, `pmset -g batt` before and after each run (in the logs). + `pmset -g therm`: no thermal or performance warning recorded. +- Foreign load, checked before each run (`ps`, `top`, `uptime`): no video + call; WindowServer 29 to 32 % CPU, loginwindow 13 %, iTerm2 11 %, Safari + 8 %, Slack idle; load averages 2.7 / 4.3 / 5.6 before run 1, 3.0 / 3.4 / + 4.3 before run 2, 4.5 after it. The machine was being used. +- Old tree for the profile: a scratch worktree of `357808b1` (the stored + baseline's commit; its `io/`, `feature_input.py`, `crs.py` and `cli.py` + are identical to master `3e6f87eb`'s, `git diff --stat 3e6f87eb 357808b1 -- + src_python/tin_engine/io src_python/tin_engine/cli.py` is empty), built the + same way; its `.so` SHA-256 `51872f0a…` equals the `cleanup-speed` + worktree's, which made the stored baseline. Removed after the run. + +## Run 1 (15:19, judged against the stored baseline): `SLOWER`, exit 1 + +`quick-run-1.log`. Fourteen `SLOWER` lines, no `MESH CHANGED`, no `BROKEN`: + +| line | stored | run 1 | change | band | +|---|---:|---:|---:|---:| +| tile t=1 total | 0.70 | 0.78 | +10.9 % | 5.0 % | +| tile t=1 refine | 0.47 | 0.52 | +11.2 % | 5.0 % | +| numedalslagen total | 8.83 | 9.48 | +7.3 % | 5.0 % | +| numedalslagen decode | 0.92 | 1.00 | +8.5 % | 5.0 % | +| numedalslagen features clip | 6.00 | 6.38 | +6.3 % | 5.0 % | +| numedalslagen features clip: clean-up | 5.94 | 6.31 | +6.3 % | 5.0 % | +| lagan total | 14.54 | 15.49 | +6.5 % | 5.0 % | +| lagan features read | 0.92 | 1.10 | +19.8 % | 5.5 % | +| lagan features clip | 6.34 | 6.69 | +5.5 % | 5.0 % | +| lagan features clip: clean-up | 5.39 | 5.68 | +5.4 % | 5.0 % | +| romsdal-slope total | 3.58 | 3.92 | +9.5 % | 5.0 % | +| romsdal-slope refine | 2.01 | 2.24 | +11.3 % | 5.0 % | +| romsdal-slope refine: scan (parallel) | 0.56 | 0.63 | +11.5 % | 5.0 % | +| romsdal-slope refine: split + flip (serial) | 1.18 | 1.33 | +12.5 % | 5.0 % | + +## Run 2 (15:30, `--save-baseline`): `SLOWER`, exit 1; record not installed + +`quick-run-2-save.log`; the record it wrote is +`baseline-ac-candidate-loaded-1530.json` (commit `c317c7e4`, power `ac`). +The full table against the stored baseline, every phase at 5 % or more of its +case's total, is `raw/delta-stored-vs-loaded-1530.md`; the totals: + +| case | stored s | run 2 s | change | mesh SHA-256 | +|---|---:|---:|---:|---| +| tile | 0.416 | 0.453 | +8.9 % | same | +| tile t=1 | 0.699 | 0.789 | +12.8 % | same | +| quarter | 0.355 | 0.388 | +9.3 % | same | +| numedalslagen | 8.829 | 9.343 | +5.8 % | same | +| lagan | 14.542 | 15.483 | +6.5 % | same | +| geilo-al-ramp | 0.329 | 0.364 | +10.9 % | same | +| romsdal-slope | 3.578 | 3.876 | +8.3 % | same | + +**Phases that moved more than their band, and why.** Every one. None ties to +a merge: the refine phases are C++ in a `.so` identical to the one within +band at 11:15 today, on meshes identical to the stored ones (`tile t=1 +refine` +15.5 %, `romsdal-slope refine: split + flip (serial)` +12.9 %, both +serial C++); `decode` is tifffile and numpy, unchanged since the baseline +(`tile decode` +12 %); `features clip` is GEOS, unchanged (+5.7 % and +6.2 %). +A merge that slowed one phase would not slow every phase by about the same +share. The cause is the machine's state this afternoon (measured: the load +averages above; the same binary within band at 12:10 UTC per increment 26, +section 14). What in the machine's state, I did not measure. + +The seven `HOTSPOT` lines (tile and quarter `refine`, `tile t=1 refine: scan +(parallel)`, Numedalslågen `features clip: clean-up`, `geilo-al-ramp decode`, +`romsdal-slope refine`) have been printed on every quick check since +2026-10-10 (`docs/benchmarks/2026-10-10/slope-tol/quick/head-run.log`); +nothing new. Numedalslågen `features clip` is ruled in `hotspots.toml` +(2026-10-12, 68 %) and prints nothing; its `clean-up` sub-row at 67 % is the +same work under the same ruling. + +## Lagan `features read`: machine, not code (one look, 12 minutes) + +What the phase does: `cli._open_features` times `feature_input.open_features` +and subtracts the clip (`src_python/tin_engine/cli.py@c317c7e4:1854`): the +CORINE GeoPackage +(8.9 GB, EPSG:3035) is queried through its rtree for the Lagan box +(`io/geopackage.query_features`, 7867 calls), each WKB blob decoded to +shapely (`decode_geometry`), reprojected to EPSG:3006 through pyproj +(`crs.reprojector`, `_transformer` builds the `Transformer`), and tested +against the domain. Of the files the task named, `io/repository.py` and +`io/models.py` changed since the baseline (`create_sqlite`, +`CachedObject.fetched`, `ClassWindow`, `ClassFractions`, `SrsEntry`), but +none of the new code is on this path: `open_geopackage` and `query_features` +are unchanged, and `crs.py`'s only change is the added `srs_entry` (36). + +Measured, both trees back to back, alternating, same venv and inputs, +`tools/bench.py _child` without the profiler (`raw/lagan-plain-runs.jsonl`): + +| tree | features read s (3 runs) | median | total s median | +|---|---|---:|---:| +| old `357808b1` (the baseline's own commit and `.so`) | 1.107, 1.133, 1.093 | **1.107** | 15.491 | +| new `c317c7e4` (master) | 1.131, 1.103, 1.102 | **1.103** | 15.541 | +| stored baseline (2026-10-11 evening) | | 0.922 | 14.542 | + +The baseline's own code reads 1.10 s today. So the +14 to +20 % is not a +change in `io/repository.py`, `io/models.py` or anything else between the +two commits; it is the machine today against the machine on 2026-10-11 +evening. The input fingerprints match (the tool would have said +`NO BASELINE: input` otherwise), so it is not the data. + +Under cProfile (`raw/lagan-profile-read-path.txt`, two runs per tree): +`open_features` cumulative 8.52 / 8.51 s old, 8.53 / 8.50 s new; +`read_source` 1.07 / 1.09 s old, 1.11 / 1.07 s new; `query_features` 7867 +calls, 1.05 / 1.07 s old, 1.09 / 1.05 s new; `decode_geometry` 7866 calls, +0.20 s on both. Same call counts, same times. The only sub-step that leaned +one way in both pairs is `crs._transformer` (pyproj `Transformer.from_crs`, +PROJ database work, about 60 primitive calls): 0.46 / 0.59 s old, 0.73 / +0.75 s new, under the profiler; it did not show in the unprofiled phase +above, and the function is the same text on both trees. Not a hotspot: the +phase is 7 % of the run (1.09 of 15.48 s), under the 40 % rule of section 5; +no `hotspots.toml` line is due. (Bookkeeping: the profiled runs passed +`--stats --binary`, and `--stats` took `--binary` as its report path, so they +wrote a text mesh and a report file named `--binary`, removed; all four used +the same arguments, so the old-new comparison holds. The unprofiled runs +above were `--binary`.) + +## Run 3 (idle wait, then `--save-baseline`) + +A waiter (`raw/wait_idle_then_save.sh`) sampled the 1-minute load average +every 30 s and was to run `--save-baseline` once it read under 1.5 twice in +a row, within 45 minutes. See `quick-run-3-idle-save.log`. + +**It never ran.** From 15:34 to 16:19 the 1-minute load average stayed between +1.50 and 5.11 (46 samples, in the log), never under 1.5 on two samples in a +row; the waiter gave up at the cap, exit 4. **The stored baseline +(`357808b1`, 2026-10-11) stayed installed this afternoon; the evening's run 4 +replaced it (below).** +The refresh is one command on an idle machine (about 4 minutes, nothing else +timed): from a checkout whose venv matches the stored machine record (numpy +2.5.4), `RASPUTIN_DATA= .venv/bin/python tools/bench_quick.py run +--save-baseline` on master. Its judge lines against the stored baseline should +then show the refine phases within band; if they again read +6 to +15 % on an +idle machine, that is a finding about the machine since 2026-10-11, not about +master, and needs a look at the machine, not the code. + +## Evening: run 4, the idle refresh, and run 5, increment 38's quick check + +### Method + +- The Swedish catchment batch finished at 18:05 UTC; Ola away. `origin/master` + `f09b9863` merged into this branch as `969c49e2` (what master gained since + the afternoon's `c317c7e4`: #236, increment 37, the MCP server, Python + only; #237 the generality audit and #238 a retrospective, both prose). + `_core` rebuilt Release into this tree's `build-bench`: SHA-256 + `55bb3993…`, byte-identical to the afternoon's and to the main session's + 11:15 build, so master's C++ is unchanged since `c317c7e4`. +- Same venv, machine record, command and data as the afternoon (above); + script version `tools/bench_quick.py` and `tools/bench.py` at `969c49e2` + (unchanged since `c317c7e4`). The waiter + `raw/evening_idle_save_then_38.sh` sampled the 1-minute load every 30 s and + started run 4 once it read under 2.0 twice in a row, then run 5 straight + after; nothing of ours beside either. The 30 samples are in + `quick-run-4-idle-save.log`: 28 at 2.03 to 3.37 from 20:15 to 20:28, then + the two that fired, 1.96 and 1.76 at 20:29. `ps` before each run: no video call, no + batch; iTerm2's `pidinfo` helper at 75 % of one core (it polls the agent + panel), WindowServer no longer in the top six. Power: AC, battery 100 %, + `pmset -g batt` before and after each run in the logs. +- Increment 38's tree: `/Users/skavhaug/projects/rasputin/.claude/worktrees/threads`, + branch `worktree-threads` at `8f9289c4` (`--threads` and `--memory-budget` + as settings; Python only). Its merge base with master is `5d2e706d`, master + before #238 (prose), and `git diff --name-only 5d2e706d 8f9289c4` lists no + C++ or CMake file; its `build-bench/_core…so`, built by the tool, is the + same `55bb3993…`. Run through this tree's venv and `tools/bench_quick.py + run --tree `, so it was judged against the baseline run 4 saved. + +### Run 4 (20:29, `--save-baseline`, idle, AC): baseline installed + +`quick-run-4-idle-save.log`, exit 2: `baseline saved`, then **`NO BASELINE: +input $RASPUTIN_DATA/sweden_glo30_cache changed`** — the Lagan case's GLO-30 +cache directory gained tiles when the Swedish batch's fetch filled it, so its +fingerprint moved from `dir:3deaa80f…` to `dir:f00da080…`; the tool refuses +to judge across an input change, and the new baseline carries the new +fingerprint. The other nine inputs and the machine record are unchanged. The +installed record is `docs/benchmarks/quick/baseline-ac.json` (commit +`969c49e2`, power `ac`), copied here as `baseline-ac-new-969c49e2.json`. + +Judged against the stored `357808b1` record as the tool would have, had the +fingerprint matched (`verdict` over the two records with the old inputs +substituted; the full table is `raw/delta-old-357808b1-vs-new-969c49e2.md`): +**one line beyond its band, no `MESH CHANGED`, no `BROKEN`**; every case's +mesh SHA-256 and `max_error` equal the stored ones. + +| line | stored | run 4 | change | band | +|---|---:|---:|---:|---:| +| lagan features read | 0.92 | 1.03 | +12.1 % | 5.5 % | + +The totals and the C++ phases: + +| case | stored s | run 4 s | change | refine (change) | mesh | +|---|---:|---:|---:|---|---| +| tile | 0.416 | 0.430 | +3.3 % | +1.2 % | same | +| tile t=1 | 0.699 | 0.711 | +1.7 % | +0.2 % | same | +| quarter | 0.355 | 0.366 | +3.1 % | -0.4 % | same | +| numedalslagen | 8.829 | 8.894 | +0.7 % | +0.4 % | same | +| lagan | 14.542 | 14.736 | +1.3 % | (under 5 % of the run) | same | +| geilo-al-ramp | 0.329 | 0.344 | +4.7 % | +1.5 % | same | +| romsdal-slope | 3.578 | 3.624 | +1.3 % | +0.1 % | same | + +So the afternoon's +6 to +15 % on every phase was the machine, as the +afternoon section says: idle, the same `.so` reads within 1.5 % of the stored +baseline on every refine phase. No merge since `357808b1` moved a phase. +`lagan features read` stays +12 % on an idle machine (1.030 to 1.071 s over +the three timed runs, so not a cache warming within the run); it is not code +(the baseline's own commit read the same 1.10 s back to back with master this +afternoon, *Lagan `features read`* above), and what in the machine's state +since 2026-10-11 makes the CORINE GeoPackage query slower by 0.11 s was not +measured. The small `decode` phases (+7 to +16 %, 0.007 to 0.010 s each) are +under the tool's 0.05 s floor. The seven `HOTSPOT` lines are the ones printed +on every quick check since 2026-10-10; nothing new. + +### Run 5 (20:31, increment 38 `8f9289c4` against the refreshed baseline): `NO CHANGE` + +`quick-run-5-increment-38.log`, exit 0. The tool's judge lines are the +seven standing `HOTSPOT` lines and `NO CHANGE`: no `SLOWER`, no `FASTER`, +no `MESH CHANGED`, no `BROKEN`, no `NOT JUDGED`. So every case's mesh +SHA-256 equals the baseline's (the tool prints `MESH CHANGED` for any case +whose hash differs), every `max_error` is within its tolerance, and no phase +at 5 % or more of its case's total moved beyond its band (5 %, or the +baseline's spread) and 0.05 s. The tool keeps no record without +`--save-baseline`, so run 5's per-phase figures are not stored; its verdict +is the evidence. Consistent with the design's claim of bit-identical meshes +and no timing change. + +## Verdict + +- Refresh: **done in the evening (run 4)**: `docs/benchmarks/quick/baseline-ac.json` + is now master `f09b9863`'s code on `969c49e2`, idle, AC, with the Lagan + GLO-30 cache's new fingerprint. Against the old `357808b1` baseline: no + mesh changed, `max_error` within tolerance on every case, refine phases + within 1.5 %; one line beyond its band, `lagan features read` +12.1 % + (0.11 s), machine-side (see above), cause within the machine not measured. + The afternoon's runs 1 and 2 measured a loaded machine, not a merge. +- Increment 38 (`8f9289c4`): **NO CHANGE** against the refreshed baseline; + meshes identical on every case; no phase outside its band. +- Lagan `features read`: **machine, not code**; 7 % of the run, not a hotspot. + +## Files + +- `quick-run-1.log`, `quick-run-2-save.log`, `quick-run-3-idle-save.log`: + the tool's lines with `pmset` and `uptime` before and after. +- `baseline-ac-old-357808b1.json`: the stored baseline as found. +- `baseline-ac-candidate-loaded-1530.json`: run 2's record, not installed. +- `raw/delta-stored-vs-loaded-1530.md`: stored vs run 2, every phase at 5 % + or more of its case. +- `raw/lagan-plain-runs.jsonl`, `raw/lagan-profile-read-path.txt`, + `raw/prof_mesh.py`: the features-read look. +- Evening: `quick-run-4-idle-save.log` (the load samples, then the refresh) + and `quick-run-5-increment-38.log`; `baseline-ac-new-969c49e2.json`, the + record installed as `docs/benchmarks/quick/baseline-ac.json`; + `raw/delta-old-357808b1-vs-new-969c49e2.md`, old vs new, every phase at + 5 % or more of its case; `raw/evening_idle_save_then_38.sh`, the waiter + that ran both. +- Meshes: each run's mesh went to a `rasputin-quick-*` temporary folder and + the session scratchpad; regenerate with the `cases.toml` arguments. + +## Review + +Round 1, 2026-10-12, @reviewer (`c31e55e7..fe06568c`, 0 production lines): CHANGES REQUESTED, one wording, applied in this recording commit: /Users/skavhaug/projects/rasputin/.claude/worktrees/baseline-1012/docs/benchmarks/2026-10-12/baseline-refresh/README.md@fe06568c:171-172 said the old baseline stays installed; run 4 replaced it. Suggestion applied: the title names `969c49e2`. Times before the evening section are local (CEST, UTC+2). Verified: the refresh rule is section 3 (b); runs 1 and 2 match their logs; both `_core` hashes `55bb3993`; the waiter's 30 samples (14-minute wait); run 4 saved, then NO BASELINE for the GLO-30 cache; installed baseline equal to the new copy, machine record equal, all seven meshes and max errors equal; run 5 (increment 38) NO CHANGE; shipped tests pass; check_citations exit 0; merges clean onto master. diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-candidate-loaded-1530.json b/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-candidate-loaded-1530.json new file mode 100644 index 00000000..4dea7a50 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-candidate-loaded-1530.json @@ -0,0 +1,785 @@ +{ + "commit": "c317c7e45a509bc9ab6d910d4a10e2d77dbb96b9", + "machine": { + "cpu_brand": "Apple M1 Max", + "p_cores": 8, + "e_cores": 2, + "memory_bytes": 34359738368, + "macos": "27.0", + "python": "3.14.7", + "numpy": "2.5.4", + "shapely": "2.2.0", + "geos": "3.14.1", + "pyproj": "3.8.0", + "proj": "9.8.1" + }, + "power": "ac", + "inputs": { + "$TREE/tests/fixtures/dem_archive/7908_3_10m_z33.tif": "file:4426661:aabd0cbc28471ce8593e4c278381811bec3fbf4e1194058b3b4888d00c3af575", + "$TREE/docs/benchmarks/2026-09-26/quarter.geojson": "file:16426:b7f7bbe96848383c77863ce29ee28c45bce087601a1738ee82ddb4ffb8279d1e", + "$RASPUTIN_DATA/DTM10_UTM33_20260925": "dir:3eef3cfed8b6d7db435791da65386cc1dcbbbadc2a9b145567765eb67b1a3dac", + "$RASPUTIN_DATA/numedalslagen_outline_nve.geojson": "file:554438:3069b1dbd2c22c87401fd57c3189f5a67d319f9aea0a95e90cc29886fa0dabca", + "$RASPUTIN_DATA/corine2018_dtm10_utm33.gpkg": "file:440332288:1790574665364371436", + "$RASPUTIN_DATA/sweden_glo30_cache": "dir:3deaa80f96e39f4ae4b4d3df54646b17e47c70847fe450d9c3e377fe7d758e0f", + "$RASPUTIN_DATA/sweden_smhi_svar/lagan_mouth_svar2022_3006.geojson": "file:1294446:a93a524fc198bd3e516ea36db55734c3e5de3994be05e19c807ce5546454123e", + "$RASPUTIN_DATA/corine_sql/u2018_clc2018_v2020_20u1_geoPackage/DATA/U2018_CLC2018_V2020_20u1.gpkg": "file:8855322624:1587553228000000000", + "$RASPUTIN_DATA/banenor_banenettverk/section_domain.geojson": "file:2337:d3af5872ac6da011cc95eaade2328cfff965116a5756f68786cd1b1907d5e571", + "$RASPUTIN_DATA/banenor_banenettverk/bergensbanen.geojson": "file:2195883:75e725295b777190f1a1be72fc99eeb2689bff59c1e23e99eaa3339bbcfea2af" + }, + "cases": { + "tile": { + "tolerance": 1.0, + "max_error": 0.9999759197235107, + "mesh_sha256": "746bf5c68bb9464fbb0746a9de6e0a5dbc7a15d1bfa1006cd9000f95d870ee0e", + "measures": { + "total": { + "median": 0.452877208, + "min": 0.445877083, + "max": 0.45548975 + }, + "decode": { + "median": 0.067403833, + "min": 0.066758625, + "max": 0.070267167 + }, + "start mesh: build": { + "median": 0.000169125, + "min": 0.000159875, + "max": 0.000193375 + }, + "start mesh: node": { + "median": 0.002723292, + "min": 0.002672167, + "max": 0.00297775 + }, + "start mesh: triangulate": { + "median": 0.029975916, + "min": 0.029701542, + "max": 0.030576667 + }, + "start mesh: constraint edges": { + "median": 0.006696625, + "min": 0.006646792, + "max": 0.007352625 + }, + "refine": { + "median": 0.200844083, + "min": 0.198034125, + "max": 0.205919959 + }, + "refine: legalise start": { + "median": 0.00047325, + "min": 0.000471708, + "max": 0.000516708 + }, + "refine: start quality": { + "median": 0.000834583, + "min": 0.000745292, + "max": 0.000848042 + }, + "refine: scan (parallel)": { + "median": 0.060525579, + "min": 0.05986291499999998, + "max": 0.061254459000000025 + }, + "refine: split + flip (serial)": { + "median": 0.11282320599999995, + "min": 0.10879888100000003, + "max": 0.11687233700000002 + }, + "refine: setup + output": { + "median": 0.026754337000000045, + "min": 0.026443124999999984, + "max": 0.027016129 + }, + "edge strip: generate": { + "median": 0.000833625, + "min": 0.000832458, + "max": 0.000941708 + }, + "edge strip: scan (parallel)": { + "median": 0.001011583, + "min": 0.000978625, + "max": 0.001082084 + }, + "edge strip: split + flip (serial)": { + "median": 0.001131958, + "min": 0.001082959, + "max": 0.001207041 + }, + "trim": { + "median": 0.017377666, + "min": 0.017240833, + "max": 0.018274583 + }, + "write: encode": { + "median": 0.009836583, + "min": 0.009692459, + "max": 0.0099555 + }, + "write: disk": { + "median": 0.008421292, + "min": 0.007383416, + "max": 0.009239083 + } + } + }, + "tile t=1": { + "tolerance": 1.0, + "max_error": 0.9999759197235107, + "mesh_sha256": "746bf5c68bb9464fbb0746a9de6e0a5dbc7a15d1bfa1006cd9000f95d870ee0e", + "measures": { + "total": { + "median": 0.788639, + "min": 0.773654917, + "max": 0.792667667 + }, + "decode": { + "median": 0.068482291, + "min": 0.063922417, + "max": 0.069939917 + }, + "start mesh: build": { + "median": 0.00016625, + "min": 0.000159166, + "max": 0.000181167 + }, + "start mesh: node": { + "median": 0.002731917, + "min": 0.002645666, + "max": 0.002798625 + }, + "start mesh: triangulate": { + "median": 0.029826958, + "min": 0.02971075, + "max": 0.030229375 + }, + "start mesh: constraint edges": { + "median": 0.006822, + "min": 0.006711208, + "max": 0.006904375 + }, + "refine": { + "median": 0.5448315, + "min": 0.527055333, + "max": 0.547584542 + }, + "refine: legalise start": { + "median": 0.000457958, + "min": 0.000457583, + "max": 0.000460875 + }, + "refine: start quality": { + "median": 0.00080575, + "min": 0.000764625, + "max": 0.000859333 + }, + "refine: scan (parallel)": { + "median": 0.4023295859999999, + "min": 0.39354079599999986, + "max": 0.40584512499999964 + }, + "refine: split + flip (serial)": { + "median": 0.11334608100000002, + "min": 0.10633770900000003, + "max": 0.11618653799999998 + }, + "refine: setup + output": { + "median": 0.026704127000000133, + "min": 0.025913495000000064, + "max": 0.027111419000000248 + }, + "edge strip: generate": { + "median": 0.000735875, + "min": 0.000727875, + "max": 0.000863584 + }, + "edge strip: scan (parallel)": { + "median": 0.001032292, + "min": 0.001003458, + "max": 0.00108025 + }, + "edge strip: split + flip (serial)": { + "median": 0.001099792, + "min": 0.000976833, + "max": 0.001267958 + }, + "trim": { + "median": 0.017407042, + "min": 0.0171815, + "max": 0.017785666 + }, + "write: encode": { + "median": 0.009889375, + "min": 0.009744625, + "max": 0.010106167 + }, + "write: disk": { + "median": 0.003609417, + "min": 0.003259042, + "max": 0.01017775 + } + } + }, + "quarter": { + "tolerance": 1.0, + "max_error": 0.9999796549479072, + "mesh_sha256": "35a2b7bfda09e5b2f2912d33709889b11bb65af2d8e644ecfb28d24191d57fa4", + "measures": { + "total": { + "median": 0.388426042, + "min": 0.385667542, + "max": 0.392591583 + }, + "domain read": { + "median": 0.001819166, + "min": 0.001706667, + "max": 0.001992458 + }, + "decode": { + "median": 0.052509166, + "min": 0.051596125, + "max": 0.052681458 + }, + "start mesh: build": { + "median": 0.000121833, + "min": 0.000117084, + "max": 0.000136791 + }, + "start mesh: node": { + "median": 0.000502833, + "min": 0.000471, + "max": 0.000515333 + }, + "start mesh: triangulate": { + "median": 0.00044975, + "min": 0.0004455, + "max": 0.000475667 + }, + "start mesh: constraint edges": { + "median": 0.000640666, + "min": 0.000618, + "max": 0.000687125 + }, + "refine": { + "median": 0.1812575, + "min": 0.178298042, + "max": 0.186827958 + }, + "refine: legalise start": { + "median": 0.000013625, + "min": 0.000013333, + "max": 0.000019792 + }, + "refine: start quality": { + "median": 0.001624416, + "min": 0.001612208, + "max": 0.001718666 + }, + "refine: scan (parallel)": { + "median": 0.04956507999999999, + "min": 0.04915666799999999, + "max": 0.05379904099999999 + }, + "refine: split + flip (serial)": { + "median": 0.111700545, + "min": 0.109299543, + "max": 0.11302658300000004 + }, + "refine: setup + output": { + "median": 0.018375584999999944, + "min": 0.018204498000000013, + "max": 0.019182501000000046 + }, + "edge strip: generate": { + "median": 0.000783625, + "min": 0.000773917, + "max": 0.000833709 + }, + "edge strip: scan (parallel)": { + "median": 0.001079459, + "min": 0.001003583, + "max": 0.001202875 + }, + "edge strip: split + flip (serial)": { + "median": 0.002516042, + "min": 0.002322292, + "max": 0.0028401669999999998 + }, + "trim": { + "median": 0.016318791, + "min": 0.015718292, + "max": 0.016598833 + }, + "write: encode": { + "median": 0.010466167, + "min": 0.009884291, + "max": 0.010809125 + }, + "write: disk": { + "median": 0.009943083, + "min": 0.005370708, + "max": 0.010360541 + } + } + }, + "numedalslagen": { + "tolerance": 10.0, + "max_error": 10.0, + "mesh_sha256": "7101ea0017bbf046b83d0a3a68bc2414207e1f82fd2f5dc785dae570451fc5f7", + "measures": { + "total": { + "median": 9.342557042, + "min": 9.310069375, + "max": 9.423764958 + }, + "domain read": { + "median": 0.015547292, + "min": 0.01542925, + "max": 0.015588708 + }, + "decode": { + "median": 0.986106917, + "min": 0.984003125, + "max": 0.996122667 + }, + "features read": { + "median": 0.2167447857791558, + "min": 0.21289613156113774, + "max": 0.2599821269977838 + }, + "features clip": { + "median": 6.342485714238137, + "min": 6.330352576449513, + "max": 6.379151580971666 + }, + "features clip: clean-up": { + "median": 6.275192750035785, + "min": 6.25939754198771, + "max": 6.312229625065811 + }, + "start mesh: build": { + "median": 0.002101709, + "min": 0.002032375, + "max": 0.002146709 + }, + "start mesh: node": { + "median": 0.150396708, + "min": 0.149210416, + "max": 0.153883 + }, + "start mesh: triangulate": { + "median": 0.0418895, + "min": 0.041513833, + "max": 0.042259459 + }, + "start mesh: constraint edges": { + "median": 0.104895167, + "min": 0.104299125, + "max": 0.109118 + }, + "refine": { + "median": 0.718932834, + "min": 0.717782417, + "max": 0.722520917 + }, + "refine: legalise start": { + "median": 0.002199958, + "min": 0.0021475, + "max": 0.002314958 + }, + "refine: start quality": { + "median": 0.039605417, + "min": 0.036893125, + "max": 0.040704042 + }, + "refine: scan (parallel)": { + "median": 0.43958862499999996, + "min": 0.43936516600000003, + "max": 0.44112408399999997 + }, + "refine: split + flip (serial)": { + "median": 0.18392196, + "min": 0.18165549999999997, + "max": 0.18538703899999998 + }, + "refine: setup + output": { + "median": 0.05474908700000003, + "min": 0.054570872999999964, + "max": 0.055008834000000006 + }, + "edge strip: generate": { + "median": 0.108492292, + "min": 0.10625, + "max": 0.110423875 + }, + "edge strip: scan (parallel)": { + "median": 0.008838334000000002, + "min": 0.008579834, + "max": 0.008867501000000002 + }, + "edge strip: split + flip (serial)": { + "median": 0.007404625000000001, + "min": 0.0071579999999999986, + "max": 0.008075248 + }, + "trim": { + "median": 0.02700425, + "min": 0.0267095, + "max": 0.027363541 + }, + "land cover": { + "median": 0.297247334, + "min": 0.296989083, + "max": 0.299215917 + }, + "write: encode": { + "median": 0.010098333, + "min": 0.009951625, + "max": 0.010144542 + }, + "write: disk": { + "median": 0.006544333, + "min": 0.006363917, + "max": 0.006845916 + } + } + }, + "lagan": { + "tolerance": 10.0, + "max_error": 9.999904677002576, + "mesh_sha256": "c0f3b555ddaffac4d38332b7f11a149e11e2039a66db6ff98695bf297a043d28", + "measures": { + "total": { + "median": 15.482706917, + "min": 15.459859375, + "max": 15.574634 + }, + "domain read": { + "median": 0.047531584, + "min": 0.04746675, + "max": 0.047799667 + }, + "decode": { + "median": 4.783096084, + "min": 4.781510791, + "max": 4.794243792 + }, + "features read": { + "median": 1.0938641305547208, + "min": 1.090973604703322, + "max": 1.1059485805453733 + }, + "features clip": { + "median": 6.737065785448067, + "min": 6.735464604338631, + "max": 6.74101416952908 + }, + "features clip: clean-up": { + "median": 5.726492709014565, + "min": 5.726266082958318, + "max": 5.729279499966651 + }, + "start mesh: build": { + "median": 0.00329425, + "min": 0.003249917, + "max": 0.0033145 + }, + "start mesh: node": { + "median": 0.311922292, + "min": 0.308580375, + "max": 0.314653334 + }, + "start mesh: triangulate": { + "median": 0.092152792, + "min": 0.091968833, + "max": 0.092571583 + }, + "start mesh: constraint edges": { + "median": 0.221589209, + "min": 0.219719084, + "max": 0.226335334 + }, + "refine": { + "median": 0.257202167, + "min": 0.257060625, + "max": 0.25763475 + }, + "refine: legalise start": { + "median": 0.004617791, + "min": 0.004400667, + "max": 0.004728375 + }, + "refine: start quality": { + "median": 0.073280667, + "min": 0.071172375, + "max": 0.073988958 + }, + "refine: scan (parallel)": { + "median": 0.06317433200000001, + "min": 0.063147538, + "max": 0.064280001 + }, + "refine: split + flip (serial)": { + "median": 0.057391957, + "min": 0.056460874999999994, + "max": 0.05882850099999999 + }, + "refine: setup + output": { + "median": 0.05873608200000002, + "min": 0.05870808499999999, + "max": 0.058981337999999994 + }, + "edge strip: generate": { + "median": 0.044900417, + "min": 0.043690917, + "max": 0.046082125 + }, + "check points: project": { + "median": 0.6822262515779585, + "min": 0.6619772913400084, + "max": 0.6961590368300676 + }, + "check points: store": { + "median": 0.28497878941802995, + "min": 0.2849000017041799, + "max": 0.2850919631191374 + }, + "final check: scan (parallel)": { + "median": 0.29400466799999997, + "min": 0.29362875099999997, + "max": 0.3366457500000001 + }, + "final check: split + flip (serial)": { + "median": 0.042366126, + "min": 0.03960233299999999, + "max": 0.044365252 + }, + "trim": { + "median": 0.019325334, + "min": 0.019080083, + "max": 0.019347875 + }, + "land cover": { + "median": 0.213230583, + "min": 0.210405875, + "max": 0.226546625 + }, + "write: encode": { + "median": 0.008080375, + "min": 0.008033334, + "max": 0.008634375 + }, + "write: disk": { + "median": 0.004213292, + "min": 0.004061333, + "max": 0.004687875 + } + } + }, + "geilo-al-ramp": { + "tolerance": 20.0, + "max_error": 19.984358261826856, + "mesh_sha256": "9f01b9ac27e2d2d5d1970e69a174995ebf99e6582adc17e05b257c8bd3f4348e", + "measures": { + "total": { + "median": 0.364481791, + "min": 0.361144916, + "max": 0.36585175 + }, + "domain read": { + "median": 0.001357875, + "min": 0.001281834, + "max": 0.001456625 + }, + "decode": { + "median": 0.159178625, + "min": 0.156829542, + "max": 0.159301542 + }, + "start mesh: build": { + "median": 0.000128042, + "min": 0.000117542, + "max": 0.000133333 + }, + "start mesh: node": { + "median": 0.000075833, + "min": 0.000075208, + "max": 0.000193125 + }, + "start mesh: triangulate": { + "median": 0.000038708, + "min": 0.000034125, + "max": 0.000058542 + }, + "start mesh: constraint edges": { + "median": 0.000096625, + "min": 0.000088583, + "max": 0.000097833 + }, + "refine": { + "median": 0.107084083, + "min": 0.105915417, + "max": 0.109272958 + }, + "refine: legalise start": { + "median": 3.167e-6, + "min": 3.125e-6, + "max": 3.292e-6 + }, + "refine: start quality": { + "median": 0.000158792, + "min": 0.000158375, + "max": 0.000161583 + }, + "refine: scan (parallel)": { + "median": 0.08860829000000002, + "min": 0.08759770900000001, + "max": 0.09162708600000004 + }, + "refine: split + flip (serial)": { + "median": 0.015103831999999998, + "min": 0.014543004000000003, + "max": 0.015222000999999997 + }, + "refine: setup + output": { + "median": 0.003051958999999993, + "min": 0.0029379929999999582, + "max": 0.003092249999999977 + }, + "edge strip: generate": { + "median": 0.000591416, + "min": 0.000584583, + "max": 0.000644167 + }, + "edge strip: scan (parallel)": { + "median": 0.000752043, + "min": 0.000743458, + "max": 0.0007663329999999999 + }, + "edge strip: split + flip (serial)": { + "median": 0.000324041, + "min": 0.000318042, + "max": 0.000326499 + }, + "trim": { + "median": 0.002338583, + "min": 0.002285417, + "max": 0.002457875 + }, + "write: encode": { + "median": 0.004480666, + "min": 0.0042055, + "max": 0.0045915 + }, + "write: disk": { + "median": 0.000685875, + "min": 0.000633791, + "max": 0.00071025 + } + } + }, + "romsdal-slope": { + "tolerance": 10.0, + "max_error": 9.999908093780277, + "mesh_sha256": "992e49cbcbe4a781ff03783a820946b163869b2b4a1f02bb70927d94224c4197", + "measures": { + "total": { + "median": 3.876016667, + "min": 3.86741075, + "max": 3.952836125 + }, + "decode": { + "median": 0.075735709, + "min": 0.07359525, + "max": 0.076414125 + }, + "start mesh: build": { + "median": 0.000172875, + "min": 0.000162166, + "max": 0.000180875 + }, + "start mesh: node": { + "median": 0.0027245, + "min": 0.002684209, + "max": 0.002727166 + }, + "start mesh: triangulate": { + "median": 0.029926416, + "min": 0.029798958, + "max": 0.029962584 + }, + "start mesh: constraint edges": { + "median": 0.006735833, + "min": 0.006665208, + "max": 0.006869208 + }, + "slope": { + "median": 0.109066625, + "min": 0.108113041, + "max": 0.10990925 + }, + "refine": { + "median": 2.238147917, + "min": 2.234612125, + "max": 2.319431916 + }, + "refine: legalise start": { + "median": 0.000469, + "min": 0.000467167, + "max": 0.00047075 + }, + "refine: start quality": { + "median": 0.00075125, + "min": 0.0007355, + "max": 0.00076725 + }, + "refine: scan (parallel)": { + "median": 0.625462498, + "min": 0.6191417509999998, + "max": 0.7055369569999996 + }, + "refine: split + flip (serial)": { + "median": 1.3369750820000001, + "min": 1.3325795420000002, + "max": 1.3391142530000002 + }, + "refine: setup + output": { + "median": 0.27569787700000026, + "min": 0.27533566799999987, + "max": 0.2786874130000001 + }, + "edge strip: generate": { + "median": 0.001156709, + "min": 0.001085916, + "max": 0.0012075 + }, + "edge strip: scan (parallel)": { + "median": 0.010671418999999998, + "min": 0.009808000000000002, + "max": 0.011014959000000001 + }, + "edge strip: split + flip (serial)": { + "median": 0.013869207000000001, + "min": 0.012960209, + "max": 0.013954374 + }, + "trim": { + "median": 0.117805416, + "min": 0.117634625, + "max": 0.117972584 + }, + "write: encode": { + "median": 0.045163292, + "min": 0.04477875, + "max": 0.045198625 + }, + "write: disk": { + "median": 0.021858125, + "min": 0.021365792, + "max": 0.022965416 + } + } + } + } +} diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-new-969c49e2.json b/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-new-969c49e2.json new file mode 100644 index 00000000..88129626 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-new-969c49e2.json @@ -0,0 +1,785 @@ +{ + "commit": "969c49e2325491dfc2449f671b67d0f599d139ca", + "machine": { + "cpu_brand": "Apple M1 Max", + "p_cores": 8, + "e_cores": 2, + "memory_bytes": 34359738368, + "macos": "27.0", + "python": "3.14.7", + "numpy": "2.5.4", + "shapely": "2.2.0", + "geos": "3.14.1", + "pyproj": "3.8.0", + "proj": "9.8.1" + }, + "power": "ac", + "inputs": { + "$TREE/tests/fixtures/dem_archive/7908_3_10m_z33.tif": "file:4426661:aabd0cbc28471ce8593e4c278381811bec3fbf4e1194058b3b4888d00c3af575", + "$TREE/docs/benchmarks/2026-09-26/quarter.geojson": "file:16426:b7f7bbe96848383c77863ce29ee28c45bce087601a1738ee82ddb4ffb8279d1e", + "$RASPUTIN_DATA/DTM10_UTM33_20260925": "dir:3eef3cfed8b6d7db435791da65386cc1dcbbbadc2a9b145567765eb67b1a3dac", + "$RASPUTIN_DATA/numedalslagen_outline_nve.geojson": "file:554438:3069b1dbd2c22c87401fd57c3189f5a67d319f9aea0a95e90cc29886fa0dabca", + "$RASPUTIN_DATA/corine2018_dtm10_utm33.gpkg": "file:440332288:1790574665364371436", + "$RASPUTIN_DATA/sweden_glo30_cache": "dir:f00da08071724a2a08e572e968895363735c53439f686134aa45b69f7cddc168", + "$RASPUTIN_DATA/sweden_smhi_svar/lagan_mouth_svar2022_3006.geojson": "file:1294446:a93a524fc198bd3e516ea36db55734c3e5de3994be05e19c807ce5546454123e", + "$RASPUTIN_DATA/corine_sql/u2018_clc2018_v2020_20u1_geoPackage/DATA/U2018_CLC2018_V2020_20u1.gpkg": "file:8855322624:1587553228000000000", + "$RASPUTIN_DATA/banenor_banenettverk/section_domain.geojson": "file:2337:d3af5872ac6da011cc95eaade2328cfff965116a5756f68786cd1b1907d5e571", + "$RASPUTIN_DATA/banenor_banenettverk/bergensbanen.geojson": "file:2195883:75e725295b777190f1a1be72fc99eeb2689bff59c1e23e99eaa3339bbcfea2af" + }, + "cases": { + "tile": { + "tolerance": 1.0, + "max_error": 0.9999759197235107, + "mesh_sha256": "746bf5c68bb9464fbb0746a9de6e0a5dbc7a15d1bfa1006cd9000f95d870ee0e", + "measures": { + "total": { + "median": 0.429804542, + "min": 0.420502458, + "max": 0.460655292 + }, + "decode": { + "median": 0.069657209, + "min": 0.065302792, + "max": 0.104699708 + }, + "start mesh: build": { + "median": 0.000172, + "min": 0.000161958, + "max": 0.000177375 + }, + "start mesh: node": { + "median": 0.002643625, + "min": 0.002631708, + "max": 0.002696167 + }, + "start mesh: triangulate": { + "median": 0.02922475, + "min": 0.029188208, + "max": 0.029241083 + }, + "start mesh: constraint edges": { + "median": 0.006622791, + "min": 0.00661075, + "max": 0.006625958 + }, + "refine": { + "median": 0.19196575, + "min": 0.186674375, + "max": 0.193222875 + }, + "refine: legalise start": { + "median": 0.000452042, + "min": 0.00045125, + "max": 0.000461458 + }, + "refine: start quality": { + "median": 0.000820958, + "min": 0.000793375, + "max": 0.000866917 + }, + "refine: scan (parallel)": { + "median": 0.05690866699999998, + "min": 0.05651604699999998, + "max": 0.057285833999999994 + }, + "refine: split + flip (serial)": { + "median": 0.107559795, + "min": 0.10220053900000002, + "max": 0.10860308200000005 + }, + "refine: setup + output": { + "median": 0.026140790000000025, + "min": 0.025929829999999987, + "max": 0.026963121000000007 + }, + "edge strip: generate": { + "median": 0.000743834, + "min": 0.000724875, + "max": 0.000784083 + }, + "edge strip: scan (parallel)": { + "median": 0.00099525, + "min": 0.000984375, + "max": 0.001022125 + }, + "edge strip: split + flip (serial)": { + "median": 0.001097208, + "min": 0.001032875, + "max": 0.001104708 + }, + "trim": { + "median": 0.017020416, + "min": 0.016889, + "max": 0.018209625 + }, + "write: encode": { + "median": 0.00967125, + "min": 0.009582583, + "max": 0.010595416 + }, + "write: disk": { + "median": 0.003769125, + "min": 0.002447667, + "max": 0.004126709 + } + } + }, + "tile t=1": { + "tolerance": 1.0, + "max_error": 0.9999759197235107, + "mesh_sha256": "746bf5c68bb9464fbb0746a9de6e0a5dbc7a15d1bfa1006cd9000f95d870ee0e", + "measures": { + "total": { + "median": 0.711294125, + "min": 0.70639975, + "max": 0.729834583 + }, + "decode": { + "median": 0.068484833, + "min": 0.066118209, + "max": 0.071427041 + }, + "start mesh: build": { + "median": 0.000162916, + "min": 0.000159084, + "max": 0.000174125 + }, + "start mesh: node": { + "median": 0.002649709, + "min": 0.002632542, + "max": 0.002658959 + }, + "start mesh: triangulate": { + "median": 0.029239417, + "min": 0.029215167, + "max": 0.029263583 + }, + "start mesh: constraint edges": { + "median": 0.006622708, + "min": 0.006591042, + "max": 0.006636166 + }, + "refine": { + "median": 0.472848125, + "min": 0.472316375, + "max": 0.494904041 + }, + "refine: legalise start": { + "median": 0.000453333, + "min": 0.000451083, + "max": 0.000455542 + }, + "refine: start quality": { + "median": 0.000767958, + "min": 0.000747416, + "max": 0.000794792 + }, + "refine: scan (parallel)": { + "median": 0.35230404500000007, + "min": 0.3517931219999998, + "max": 0.366728253 + }, + "refine: split + flip (serial)": { + "median": 0.09392433000000001, + "min": 0.093732415, + "max": 0.100876456 + }, + "refine: setup + output": { + "median": 0.025388667000000142, + "min": 0.025289462000000096, + "max": 0.026071540000000004 + }, + "edge strip: generate": { + "median": 0.000695834, + "min": 0.000688583, + "max": 0.000932667 + }, + "edge strip: scan (parallel)": { + "median": 0.001021375, + "min": 0.000976875, + "max": 0.001053833 + }, + "edge strip: split + flip (serial)": { + "median": 0.001032875, + "min": 0.001010958, + "max": 0.001111292 + }, + "trim": { + "median": 0.016894583, + "min": 0.016762792, + "max": 0.017187708 + }, + "write: encode": { + "median": 0.009587542, + "min": 0.009515291, + "max": 0.009958375 + }, + "write: disk": { + "median": 0.003953667, + "min": 0.003228834, + "max": 0.010503291 + } + } + }, + "quarter": { + "tolerance": 1.0, + "max_error": 0.9999796549479072, + "mesh_sha256": "35a2b7bfda09e5b2f2912d33709889b11bb65af2d8e644ecfb28d24191d57fa4", + "measures": { + "total": { + "median": 0.366311042, + "min": 0.355239, + "max": 0.379760458 + }, + "domain read": { + "median": 0.001634875, + "min": 0.001624125, + "max": 0.005201959 + }, + "decode": { + "median": 0.050675417, + "min": 0.047930459, + "max": 0.063198 + }, + "start mesh: build": { + "median": 0.000122458, + "min": 0.000120417, + "max": 0.000132708 + }, + "start mesh: node": { + "median": 0.000488416, + "min": 0.000467667, + "max": 0.00051025 + }, + "start mesh: triangulate": { + "median": 0.000449041, + "min": 0.000445959, + "max": 0.000472917 + }, + "start mesh: constraint edges": { + "median": 0.000622583, + "min": 0.0006185, + "max": 0.000638625 + }, + "refine": { + "median": 0.171212042, + "min": 0.165989417, + "max": 0.174061292 + }, + "refine: legalise start": { + "median": 0.000013666, + "min": 0.000013333, + "max": 0.000014875 + }, + "refine: start quality": { + "median": 0.001613042, + "min": 0.001603458, + "max": 0.001643208 + }, + "refine: scan (parallel)": { + "median": 0.045655458, + "min": 0.045073167, + "max": 0.046097005 + }, + "refine: split + flip (serial)": { + "median": 0.10579046000000003, + "min": 0.101295208, + "max": 0.10896141800000003 + }, + "refine: setup + output": { + "median": 0.01814462499999997, + "min": 0.01785175299999997, + "max": 0.01826507699999999 + }, + "edge strip: generate": { + "median": 0.00080225, + "min": 0.000779041, + "max": 0.00084675 + }, + "edge strip: scan (parallel)": { + "median": 0.001099917, + "min": 0.001086751, + "max": 0.001123792 + }, + "edge strip: split + flip (serial)": { + "median": 0.002649209, + "min": 0.002447416, + "max": 0.002704625 + }, + "trim": { + "median": 0.015792166, + "min": 0.015711459, + "max": 0.015830334 + }, + "write: encode": { + "median": 0.009773292, + "min": 0.009727833, + "max": 0.010235042 + }, + "write: disk": { + "median": 0.004068417, + "min": 0.003952583, + "max": 0.004087541 + } + } + }, + "numedalslagen": { + "tolerance": 10.0, + "max_error": 10.0, + "mesh_sha256": "7101ea0017bbf046b83d0a3a68bc2414207e1f82fd2f5dc785dae570451fc5f7", + "measures": { + "total": { + "median": 8.893803584, + "min": 8.888226958, + "max": 8.909919708 + }, + "domain read": { + "median": 0.014620459, + "min": 0.014544291, + "max": 0.014684292 + }, + "decode": { + "median": 0.950346417, + "min": 0.950038625, + "max": 0.95626325 + }, + "features read": { + "median": 0.211907499586232, + "min": 0.2108819163404405, + "max": 0.24707040598150343 + }, + "features clip": { + "median": 6.021925594075583, + "min": 6.0148165844148025, + "max": 6.037521208636463 + }, + "features clip: clean-up": { + "median": 5.955918250023387, + "min": 5.948564375052229, + "max": 5.970792250009254 + }, + "start mesh: build": { + "median": 0.001898083, + "min": 0.001892375, + "max": 0.001917416 + }, + "start mesh: node": { + "median": 0.142863417, + "min": 0.142621333, + "max": 0.143016959 + }, + "start mesh: triangulate": { + "median": 0.039568042, + "min": 0.039549875, + "max": 0.039740167 + }, + "start mesh: constraint edges": { + "median": 0.098003209, + "min": 0.09796325, + "max": 0.098161417 + }, + "refine": { + "median": 0.661399084, + "min": 0.661204666, + "max": 0.663069583 + }, + "refine: legalise start": { + "median": 0.002124416, + "min": 0.002122541, + "max": 0.002128584 + }, + "refine: start quality": { + "median": 0.035377667, + "min": 0.035118666, + "max": 0.035387667 + }, + "refine: scan (parallel)": { + "median": 0.3997212930000001, + "min": 0.395849668, + "max": 0.400112291 + }, + "refine: split + flip (serial)": { + "median": 0.17266170499999997, + "min": 0.170345205, + "max": 0.17456483299999995 + }, + "refine: setup + output": { + "median": 0.05324696200000001, + "min": 0.05317450199999996, + "max": 0.053737333000000054 + }, + "edge strip: generate": { + "median": 0.09940575, + "min": 0.09936375, + "max": 0.103394042 + }, + "edge strip: scan (parallel)": { + "median": 0.008193127, + "min": 0.007850540999999999, + "max": 0.008470123999999999 + }, + "edge strip: split + flip (serial)": { + "median": 0.007335001, + "min": 0.00723725, + "max": 0.00773 + }, + "trim": { + "median": 0.025915709, + "min": 0.02571925, + "max": 0.026244375 + }, + "land cover": { + "median": 0.296326042, + "min": 0.294683417, + "max": 0.29975275 + }, + "write: encode": { + "median": 0.0098895, + "min": 0.009801, + "max": 0.010555125 + }, + "write: disk": { + "median": 0.006055875, + "min": 0.005777166, + "max": 0.006730375 + } + } + }, + "lagan": { + "tolerance": 10.0, + "max_error": 9.999904677002576, + "mesh_sha256": "c0f3b555ddaffac4d38332b7f11a149e11e2039a66db6ff98695bf297a043d28", + "measures": { + "total": { + "median": 14.736105, + "min": 14.67228375, + "max": 14.737309375 + }, + "domain read": { + "median": 0.04538525, + "min": 0.045281958, + "max": 0.045452709 + }, + "decode": { + "median": 4.614569208, + "min": 4.595618042, + "max": 4.649497209 + }, + "features read": { + "median": 1.0329260997241363, + "min": 1.0304532466689125, + "max": 1.0706864875974134 + }, + "features clip": { + "median": 6.352541525382549, + "min": 6.3516043873969465, + "max": 6.352544419351034 + }, + "features clip: clean-up": { + "median": 5.396905416972004, + "min": 5.393577124923468, + "max": 5.399352208944038 + }, + "start mesh: build": { + "median": 0.003276375, + "min": 0.003239333, + "max": 0.003278291 + }, + "start mesh: node": { + "median": 0.295757, + "min": 0.295414417, + "max": 0.298556542 + }, + "start mesh: triangulate": { + "median": 0.087646417, + "min": 0.087466, + "max": 0.087658917 + }, + "start mesh: constraint edges": { + "median": 0.199927042, + "min": 0.19983875, + "max": 0.202502958 + }, + "refine": { + "median": 0.240219584, + "min": 0.237092458, + "max": 0.242974125 + }, + "refine: legalise start": { + "median": 0.004304709, + "min": 0.004295875, + "max": 0.004432875 + }, + "refine: start quality": { + "median": 0.062964542, + "min": 0.062865208, + "max": 0.062972542 + }, + "refine: scan (parallel)": { + "median": 0.05965337299999999, + "min": 0.059205538999999995, + "max": 0.061640876000000004 + }, + "refine: split + flip (serial)": { + "median": 0.05617150000000001, + "min": 0.05417624999999999, + "max": 0.056377708 + }, + "refine: setup + output": { + "median": 0.05679108600000002, + "min": 0.05654075200000003, + "max": 0.05789333199999999 + }, + "edge strip: generate": { + "median": 0.040937459, + "min": 0.04092275, + "max": 0.041232958 + }, + "check points: project": { + "median": 0.6725858339341357, + "min": 0.6340025420067832, + "max": 0.6796541711082682 + }, + "check points: store": { + "median": 0.2757216628783196, + "min": 0.27522270804286003, + "max": 0.2766910820998177 + }, + "final check: scan (parallel)": { + "median": 0.266046169, + "min": 0.265628751, + "max": 0.267461582 + }, + "final check: split + flip (serial)": { + "median": 0.038262623999999995, + "min": 0.03826162400000001, + "max": 0.04050221 + }, + "trim": { + "median": 0.018851791, + "min": 0.018712666, + "max": 0.018906917 + }, + "land cover": { + "median": 0.21108525, + "min": 0.209567708, + "max": 0.211225125 + }, + "write: encode": { + "median": 0.008223416, + "min": 0.008209667, + "max": 0.008281167 + }, + "write: disk": { + "median": 0.004533958, + "min": 0.004505667, + "max": 0.004556833 + } + } + }, + "geilo-al-ramp": { + "tolerance": 20.0, + "max_error": 19.984358261826856, + "mesh_sha256": "9f01b9ac27e2d2d5d1970e69a174995ebf99e6582adc17e05b257c8bd3f4348e", + "measures": { + "total": { + "median": 0.344221792, + "min": 0.343089625, + "max": 0.344841916 + }, + "domain read": { + "median": 0.001231625, + "min": 0.001225041, + "max": 0.001235666 + }, + "decode": { + "median": 0.148454458, + "min": 0.148100875, + "max": 0.148698458 + }, + "start mesh: build": { + "median": 0.000113167, + "min": 0.00011175, + "max": 0.000115583 + }, + "start mesh: node": { + "median": 0.000076458, + "min": 0.000068708, + "max": 0.000080042 + }, + "start mesh: triangulate": { + "median": 0.000029875, + "min": 0.000029458, + "max": 0.000032791 + }, + "start mesh: constraint edges": { + "median": 0.000091542, + "min": 0.000083583, + "max": 0.00009225 + }, + "refine": { + "median": 0.10066825, + "min": 0.100063209, + "max": 0.10154775 + }, + "refine: legalise start": { + "median": 3e-6, + "min": 3e-6, + "max": 3.292e-6 + }, + "refine: start quality": { + "median": 0.000157334, + "min": 0.000155083, + "max": 0.000159875 + }, + "refine: scan (parallel)": { + "median": 0.08338466600000002, + "min": 0.08304483400000003, + "max": 0.083541045 + }, + "refine: split + flip (serial)": { + "median": 0.014486085000000001, + "min": 0.013778876000000002, + "max": 0.014864668 + }, + "refine: setup + output": { + "median": 0.0029769969999999674, + "min": 0.0027412919999999785, + "max": 0.0029791620000000074 + }, + "edge strip: generate": { + "median": 0.000547917, + "min": 0.0005445, + "max": 0.000622208 + }, + "edge strip: scan (parallel)": { + "median": 0.0006815, + "min": 0.000670793, + "max": 0.0007561670000000001 + }, + "edge strip: split + flip (serial)": { + "median": 0.0003225, + "min": 0.000250333, + "max": 0.000384209 + }, + "trim": { + "median": 0.002296666, + "min": 0.002231625, + "max": 0.002365666 + }, + "write: encode": { + "median": 0.004375, + "min": 0.004342625, + "max": 0.004403709 + }, + "write: disk": { + "median": 0.000653375, + "min": 0.000643416, + "max": 0.000656875 + } + } + }, + "romsdal-slope": { + "tolerance": 10.0, + "max_error": 9.999908093780277, + "mesh_sha256": "992e49cbcbe4a781ff03783a820946b163869b2b4a1f02bb70927d94224c4197", + "measures": { + "total": { + "median": 3.624219916, + "min": 3.573554375, + "max": 3.668853792 + }, + "decode": { + "median": 0.070560333, + "min": 0.070536042, + "max": 0.071511292 + }, + "start mesh: build": { + "median": 0.000169291, + "min": 0.000166833, + "max": 0.00017375 + }, + "start mesh: node": { + "median": 0.002650667, + "min": 0.002643917, + "max": 0.0027065 + }, + "start mesh: triangulate": { + "median": 0.0292315, + "min": 0.02921975, + "max": 0.02931375 + }, + "start mesh: constraint edges": { + "median": 0.006592333, + "min": 0.006585417, + "max": 0.006607834 + }, + "slope": { + "median": 0.105851708, + "min": 0.105340875, + "max": 0.105922042 + }, + "refine": { + "median": 2.010205334, + "min": 2.002457791, + "max": 2.037710666 + }, + "refine: legalise start": { + "median": 0.000464542, + "min": 0.00045975, + "max": 0.000468042 + }, + "refine: start quality": { + "median": 0.00074875, + "min": 0.000734875, + "max": 0.000764542 + }, + "refine: scan (parallel)": { + "median": 0.567158586, + "min": 0.5653191710000003, + "max": 0.5687510840000001 + }, + "refine: split + flip (serial)": { + "median": 1.1825762899999999, + "min": 1.1705820829999998, + "max": 1.205978833 + }, + "refine: setup + output": { + "median": 0.26189204, + "min": 0.261101373, + "max": 0.26337383000000014 + }, + "edge strip: generate": { + "median": 0.001087708, + "min": 0.001071208, + "max": 0.001096584 + }, + "edge strip: scan (parallel)": { + "median": 0.009625835, + "min": 0.009499584, + "max": 0.009804374999999999 + }, + "edge strip: split + flip (serial)": { + "median": 0.01310396, + "min": 0.012913375999999999, + "max": 0.016226374000000002 + }, + "trim": { + "median": 0.117503708, + "min": 0.117116959, + "max": 0.118099083 + }, + "write: encode": { + "median": 0.044908, + "min": 0.044622709, + "max": 0.04755025 + }, + "write: disk": { + "median": 0.061405125, + "min": 0.021662583, + "max": 0.070209708 + } + } + } + } +} diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-old-357808b1.json b/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-old-357808b1.json new file mode 100644 index 00000000..c4e09b53 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/baseline-ac-old-357808b1.json @@ -0,0 +1,785 @@ +{ + "commit": "357808b1d23462b1ff5c71760a0a9943fff76dd4", + "machine": { + "cpu_brand": "Apple M1 Max", + "p_cores": 8, + "e_cores": 2, + "memory_bytes": 34359738368, + "macos": "27.0", + "python": "3.14.7", + "numpy": "2.5.4", + "shapely": "2.2.0", + "geos": "3.14.1", + "pyproj": "3.8.0", + "proj": "9.8.1" + }, + "power": "ac", + "inputs": { + "$TREE/tests/fixtures/dem_archive/7908_3_10m_z33.tif": "file:4426661:aabd0cbc28471ce8593e4c278381811bec3fbf4e1194058b3b4888d00c3af575", + "$TREE/docs/benchmarks/2026-09-26/quarter.geojson": "file:16426:b7f7bbe96848383c77863ce29ee28c45bce087601a1738ee82ddb4ffb8279d1e", + "$RASPUTIN_DATA/DTM10_UTM33_20260925": "dir:3eef3cfed8b6d7db435791da65386cc1dcbbbadc2a9b145567765eb67b1a3dac", + "$RASPUTIN_DATA/numedalslagen_outline_nve.geojson": "file:554438:3069b1dbd2c22c87401fd57c3189f5a67d319f9aea0a95e90cc29886fa0dabca", + "$RASPUTIN_DATA/corine2018_dtm10_utm33.gpkg": "file:440332288:1790574665364371436", + "$RASPUTIN_DATA/sweden_glo30_cache": "dir:3deaa80f96e39f4ae4b4d3df54646b17e47c70847fe450d9c3e377fe7d758e0f", + "$RASPUTIN_DATA/sweden_smhi_svar/lagan_mouth_svar2022_3006.geojson": "file:1294446:a93a524fc198bd3e516ea36db55734c3e5de3994be05e19c807ce5546454123e", + "$RASPUTIN_DATA/corine_sql/u2018_clc2018_v2020_20u1_geoPackage/DATA/U2018_CLC2018_V2020_20u1.gpkg": "file:8855322624:1587553228000000000", + "$RASPUTIN_DATA/banenor_banenettverk/section_domain.geojson": "file:2337:d3af5872ac6da011cc95eaade2328cfff965116a5756f68786cd1b1907d5e571", + "$RASPUTIN_DATA/banenor_banenettverk/bergensbanen.geojson": "file:2195883:75e725295b777190f1a1be72fc99eeb2689bff59c1e23e99eaa3339bbcfea2af" + }, + "cases": { + "tile": { + "tolerance": 1.0, + "max_error": 0.9999759197235107, + "mesh_sha256": "746bf5c68bb9464fbb0746a9de6e0a5dbc7a15d1bfa1006cd9000f95d870ee0e", + "measures": { + "total": { + "median": 0.415963875, + "min": 0.409482542, + "max": 0.418569459 + }, + "decode": { + "median": 0.060134583, + "min": 0.058657334, + "max": 0.061936625 + }, + "start mesh: build": { + "median": 0.00017525, + "min": 0.000171709, + "max": 0.0002175 + }, + "start mesh: node": { + "median": 0.002629333, + "min": 0.002613791, + "max": 0.002672584 + }, + "start mesh: triangulate": { + "median": 0.029249291, + "min": 0.029212459, + "max": 0.029342375 + }, + "start mesh: constraint edges": { + "median": 0.006628292, + "min": 0.006577917, + "max": 0.006648291 + }, + "refine": { + "median": 0.18963575, + "min": 0.1840335, + "max": 0.191952709 + }, + "refine: legalise start": { + "median": 0.000456459, + "min": 0.000451666, + "max": 0.000465125 + }, + "refine: start quality": { + "median": 0.000719125, + "min": 0.000708791, + "max": 0.000743458 + }, + "refine: scan (parallel)": { + "median": 0.05605558699999999, + "min": 0.05550579000000001, + "max": 0.056878839 + }, + "refine: split + flip (serial)": { + "median": 0.10617537000000003, + "min": 0.10221883000000001, + "max": 0.10878087500000003 + }, + "refine: setup + output": { + "median": 0.025143629999999972, + "min": 0.025011369000000006, + "max": 0.025580412999999996 + }, + "edge strip: generate": { + "median": 0.000753459, + "min": 0.000740833, + "max": 0.00078125 + }, + "edge strip: scan (parallel)": { + "median": 0.001003834, + "min": 0.000992792, + "max": 0.00103425 + }, + "edge strip: split + flip (serial)": { + "median": 0.001039083, + "min": 0.001022792, + "max": 0.001111 + }, + "trim": { + "median": 0.017144458, + "min": 0.017099417, + "max": 0.017305166 + }, + "write: encode": { + "median": 0.009446042, + "min": 0.009401416, + "max": 0.009483459 + }, + "write: disk": { + "median": 0.003253791, + "min": 0.00285225, + "max": 0.003490208 + } + } + }, + "tile t=1": { + "tolerance": 1.0, + "max_error": 0.9999759197235107, + "mesh_sha256": "746bf5c68bb9464fbb0746a9de6e0a5dbc7a15d1bfa1006cd9000f95d870ee0e", + "measures": { + "total": { + "median": 0.699345042, + "min": 0.698522291, + "max": 0.701520208 + }, + "decode": { + "median": 0.060461875, + "min": 0.059979042, + "max": 0.063467542 + }, + "start mesh: build": { + "median": 0.000171958, + "min": 0.000166083, + "max": 0.00019175 + }, + "start mesh: node": { + "median": 0.002638208, + "min": 0.002625833, + "max": 0.0026535 + }, + "start mesh: triangulate": { + "median": 0.029259584, + "min": 0.029204292, + "max": 0.029281666 + }, + "start mesh: constraint edges": { + "median": 0.006600167, + "min": 0.0065755, + "max": 0.006606167 + }, + "refine": { + "median": 0.471695084, + "min": 0.471505292, + "max": 0.472082 + }, + "refine: legalise start": { + "median": 0.000455292, + "min": 0.000454583, + "max": 0.00045675 + }, + "refine: start quality": { + "median": 0.000742, + "min": 0.000711083, + "max": 0.000778792 + }, + "refine: scan (parallel)": { + "median": 0.3518835419999999, + "min": 0.3518694170000001, + "max": 0.35251199799999994 + }, + "refine: split + flip (serial)": { + "median": 0.09404675200000004, + "min": 0.09354608300000002, + "max": 0.094215045 + }, + "refine: setup + output": { + "median": 0.024436711000000055, + "min": 0.024414089000000083, + "max": 0.024481247000000095 + }, + "edge strip: generate": { + "median": 0.000700625, + "min": 0.000687833, + "max": 0.000704458 + }, + "edge strip: scan (parallel)": { + "median": 0.001016375, + "min": 0.000999375, + "max": 0.001025667 + }, + "edge strip: split + flip (serial)": { + "median": 0.001055708, + "min": 0.001019875, + "max": 0.00107525 + }, + "trim": { + "median": 0.017234708, + "min": 0.017102458, + "max": 0.017310542 + }, + "write: encode": { + "median": 0.009445458, + "min": 0.009403834, + "max": 0.00954925 + }, + "write: disk": { + "median": 0.003674875, + "min": 0.003261875, + "max": 0.00372575 + } + } + }, + "quarter": { + "tolerance": 1.0, + "max_error": 0.9999796549479072, + "mesh_sha256": "35a2b7bfda09e5b2f2912d33709889b11bb65af2d8e644ecfb28d24191d57fa4", + "measures": { + "total": { + "median": 0.355239917, + "min": 0.346618459, + "max": 0.35728825 + }, + "domain read": { + "median": 0.001567958, + "min": 0.001559916, + "max": 0.001584708 + }, + "decode": { + "median": 0.0437335, + "min": 0.043059334, + "max": 0.045552 + }, + "start mesh: build": { + "median": 0.000126667, + "min": 0.00012575, + "max": 0.000133417 + }, + "start mesh: node": { + "median": 0.00048, + "min": 0.00047375, + "max": 0.000529166 + }, + "start mesh: triangulate": { + "median": 0.000447916, + "min": 0.000446041, + "max": 0.000451416 + }, + "start mesh: constraint edges": { + "median": 0.000590333, + "min": 0.000585917, + "max": 0.000596 + }, + "refine": { + "median": 0.171971959, + "min": 0.163373125, + "max": 0.173065167 + }, + "refine: legalise start": { + "median": 0.000013334, + "min": 0.000013167, + "max": 0.000013584 + }, + "refine: start quality": { + "median": 0.001615333, + "min": 0.001604708, + "max": 0.001626708 + }, + "refine: scan (parallel)": { + "median": 0.045102876999999986, + "min": 0.04491041599999999, + "max": 0.046273589999999996 + }, + "refine: split + flip (serial)": { + "median": 0.10733411799999998, + "min": 0.100114457, + "max": 0.10843924999999997 + }, + "refine: setup + output": { + "median": 0.01693670700000005, + "min": 0.01653312400000001, + "max": 0.017424415 + }, + "edge strip: generate": { + "median": 0.000807083, + "min": 0.000757959, + "max": 0.000810708 + }, + "edge strip: scan (parallel)": { + "median": 0.001058167, + "min": 0.000933, + "max": 0.001106125 + }, + "edge strip: split + flip (serial)": { + "median": 0.0024928330000000003, + "min": 0.0022938340000000002, + "max": 0.002553334 + }, + "trim": { + "median": 0.015983791, + "min": 0.015893708, + "max": 0.01600575 + }, + "write: encode": { + "median": 0.009495291, + "min": 0.009368959, + "max": 0.00968125 + }, + "write: disk": { + "median": 0.003561917, + "min": 0.003426458, + "max": 0.003709792 + } + } + }, + "numedalslagen": { + "tolerance": 10.0, + "max_error": 10.0, + "mesh_sha256": "7101ea0017bbf046b83d0a3a68bc2414207e1f82fd2f5dc785dae570451fc5f7", + "measures": { + "total": { + "median": 8.829228584, + "min": 8.828564375, + "max": 8.835614083 + }, + "domain read": { + "median": 0.013599625, + "min": 0.013553, + "max": 0.013614917 + }, + "decode": { + "median": 0.920596416, + "min": 0.918978959, + "max": 0.92552275 + }, + "features read": { + "median": 0.1973755065118894, + "min": 0.19701432588044554, + "max": 0.200384576106444 + }, + "features clip": { + "median": 6.000404131948017, + "min": 5.996730951475911, + "max": 6.009083757176995 + }, + "features clip: clean-up": { + "median": 5.936553500010632, + "min": 5.932732084067538, + "max": 5.9448600829346105 + }, + "start mesh: build": { + "median": 0.001760542, + "min": 0.001760292, + "max": 0.001769292 + }, + "start mesh: node": { + "median": 0.147264375, + "min": 0.14577075, + "max": 0.14733075 + }, + "start mesh: triangulate": { + "median": 0.039687042, + "min": 0.039634416, + "max": 0.039709917 + }, + "start mesh: constraint edges": { + "median": 0.093702042, + "min": 0.09296875, + "max": 0.094190375 + }, + "refine": { + "median": 0.659033375, + "min": 0.655672125, + "max": 0.662185 + }, + "refine: legalise start": { + "median": 0.002126833, + "min": 0.002125083, + "max": 0.002181334 + }, + "refine: start quality": { + "median": 0.035552959, + "min": 0.034938, + "max": 0.035729083 + }, + "refine: scan (parallel)": { + "median": 0.39490754, + "min": 0.3946743339999999, + "max": 0.395629583 + }, + "refine: split + flip (serial)": { + "median": 0.17402166800000002, + "min": 0.170890834, + "max": 0.176348416 + }, + "refine: setup + output": { + "median": 0.052426956000000136, + "min": 0.05208687500000009, + "max": 0.05325100199999999 + }, + "edge strip: generate": { + "median": 0.098305666, + "min": 0.098302167, + "max": 0.098961 + }, + "edge strip: scan (parallel)": { + "median": 0.008010208999999999, + "min": 0.007995292, + "max": 0.008590707999999999 + }, + "edge strip: split + flip (serial)": { + "median": 0.007330208999999999, + "min": 0.007145334, + "max": 0.007409542000000001 + }, + "trim": { + "median": 0.025855083, + "min": 0.025761208, + "max": 0.025908042 + }, + "land cover": { + "median": 0.295597333, + "min": 0.295216375, + "max": 0.295728834 + }, + "write: encode": { + "median": 0.009886292, + "min": 0.009834709, + "max": 0.009888417 + }, + "write: disk": { + "median": 0.006146209, + "min": 0.006043, + "max": 0.012273958 + } + } + }, + "lagan": { + "tolerance": 10.0, + "max_error": 9.999904677002576, + "mesh_sha256": "c0f3b555ddaffac4d38332b7f11a149e11e2039a66db6ff98695bf297a043d28", + "measures": { + "total": { + "median": 14.542084583, + "min": 14.535847917, + "max": 14.551780625 + }, + "domain read": { + "median": 0.042737541, + "min": 0.042447125, + "max": 0.043427792 + }, + "decode": { + "median": 4.578057291, + "min": 4.565632417, + "max": 4.584270167 + }, + "features read": { + "median": 0.921586470445618, + "min": 0.9120247770333663, + "max": 0.963109087315388 + }, + "features clip": { + "median": 6.342146404553205, + "min": 6.338787996675819, + "max": 6.34631439007353 + }, + "features clip: clean-up": { + "median": 5.392329290974885, + "min": 5.391268541919999, + "max": 5.398513959022239 + }, + "start mesh: build": { + "median": 0.003107875, + "min": 0.003080167, + "max": 0.003132375 + }, + "start mesh: node": { + "median": 0.306133667, + "min": 0.305732583, + "max": 0.306136959 + }, + "start mesh: triangulate": { + "median": 0.087295375, + "min": 0.087039208, + "max": 0.087431208 + }, + "start mesh: constraint edges": { + "median": 0.190978042, + "min": 0.190633125, + "max": 0.191376125 + }, + "refine": { + "median": 0.237921625, + "min": 0.237089709, + "max": 0.240623083 + }, + "refine: legalise start": { + "median": 0.004321209, + "min": 0.00430625, + "max": 0.004351125 + }, + "refine: start quality": { + "median": 0.063313916, + "min": 0.062647959, + "max": 0.063466458 + }, + "refine: scan (parallel)": { + "median": 0.05935803999999999, + "min": 0.059079792, + "max": 0.059541455 + }, + "refine: split + flip (serial)": { + "median": 0.054421622, + "min": 0.05414283399999999, + "max": 0.057798166000000005 + }, + "refine: setup + output": { + "median": 0.05646462800000002, + "min": 0.055953169999999997, + "max": 0.05646779299999999 + }, + "edge strip: generate": { + "median": 0.040602, + "min": 0.040267959, + "max": 0.040666834 + }, + "check points: project": { + "median": 0.6664140454959124, + "min": 0.6445603384636343, + "max": 0.6678974126698449 + }, + "check points: store": { + "median": 0.2739846293001653, + "min": 0.272586036511269, + "max": 0.27819728855660675 + }, + "final check: scan (parallel)": { + "median": 0.264481997, + "min": 0.262131541, + "max": 0.2656331669999999 + }, + "final check: split + flip (serial)": { + "median": 0.038177456, + "min": 0.037784956999999994, + "max": 0.03839912400000001 + }, + "trim": { + "median": 0.018914791, + "min": 0.018853458, + "max": 0.018928833 + }, + "land cover": { + "median": 0.211289208, + "min": 0.21093725, + "max": 0.211618625 + }, + "write: encode": { + "median": 0.008228792, + "min": 0.008190625, + "max": 0.008303584 + }, + "write: disk": { + "median": 0.004085541, + "min": 0.003913208, + "max": 0.0040945 + } + } + }, + "geilo-al-ramp": { + "tolerance": 20.0, + "max_error": 19.984358261826856, + "mesh_sha256": "9f01b9ac27e2d2d5d1970e69a174995ebf99e6582adc17e05b257c8bd3f4348e", + "measures": { + "total": { + "median": 0.328736709, + "min": 0.327646541, + "max": 0.331091417 + }, + "domain read": { + "median": 0.001223958, + "min": 0.001193125, + "max": 0.001237209 + }, + "decode": { + "median": 0.13842975, + "min": 0.138245292, + "max": 0.138948709 + }, + "start mesh: build": { + "median": 0.0001265, + "min": 0.000120417, + "max": 0.000132583 + }, + "start mesh: node": { + "median": 0.000077, + "min": 0.000072459, + "max": 0.000078542 + }, + "start mesh: triangulate": { + "median": 0.000032459, + "min": 0.000030375, + "max": 0.00003275 + }, + "start mesh: constraint edges": { + "median": 0.000096292, + "min": 0.000084584, + "max": 0.000099375 + }, + "refine": { + "median": 0.099222708, + "min": 0.099139917, + "max": 0.099541917 + }, + "refine: legalise start": { + "median": 3.084e-6, + "min": 3e-6, + "max": 3.125e-6 + }, + "refine: start quality": { + "median": 0.000154041, + "min": 0.000151959, + "max": 0.000155 + }, + "refine: scan (parallel)": { + "median": 0.08256295899999999, + "min": 0.082561748, + "max": 0.08276754300000001 + }, + "refine: split + flip (serial)": { + "median": 0.013793952, + "min": 0.013646123000000001, + "max": 0.013868874000000002 + }, + "refine: setup + output": { + "median": 0.0027748799999999935, + "min": 0.0026358320000000185, + "max": 0.0028224219999999772 + }, + "edge strip: generate": { + "median": 0.000566792, + "min": 0.000533875, + "max": 0.000601084 + }, + "edge strip: scan (parallel)": { + "median": 0.0006741659999999999, + "min": 0.000641333, + "max": 0.00072825 + }, + "edge strip: split + flip (serial)": { + "median": 0.000327834, + "min": 0.000243999, + "max": 0.000373084 + }, + "trim": { + "median": 0.002361208, + "min": 0.002238458, + "max": 0.002452459 + }, + "write: encode": { + "median": 0.004143583, + "min": 0.004069917, + "max": 0.004341125 + }, + "write: disk": { + "median": 0.000667291, + "min": 0.000614709, + "max": 0.00070875 + } + } + }, + "romsdal-slope": { + "tolerance": 10.0, + "max_error": 9.999908093780277, + "mesh_sha256": "992e49cbcbe4a781ff03783a820946b163869b2b4a1f02bb70927d94224c4197", + "measures": { + "total": { + "median": 3.578062333, + "min": 3.560890084, + "max": 3.61971725 + }, + "decode": { + "median": 0.067789542, + "min": 0.066407958, + "max": 0.070348 + }, + "start mesh: build": { + "median": 0.000172417, + "min": 0.000166208, + "max": 0.000173292 + }, + "start mesh: node": { + "median": 0.002643709, + "min": 0.002630709, + "max": 0.002646917 + }, + "start mesh: triangulate": { + "median": 0.029220125, + "min": 0.029195625, + "max": 0.029241125 + }, + "start mesh: constraint edges": { + "median": 0.006545333, + "min": 0.00654325, + "max": 0.006562417 + }, + "slope": { + "median": 0.105743292, + "min": 0.105629208, + "max": 0.106262166 + }, + "refine": { + "median": 2.008883625, + "min": 2.002274709, + "max": 2.010968792 + }, + "refine: legalise start": { + "median": 0.000462125, + "min": 0.000460083, + "max": 0.000474375 + }, + "refine: start quality": { + "median": 0.000755292, + "min": 0.0007465, + "max": 0.0007765 + }, + "refine: scan (parallel)": { + "median": 0.5638042910000002, + "min": 0.5638000879999999, + "max": 0.5670207089999998 + }, + "refine: split + flip (serial)": { + "median": 1.1840706219999997, + "min": 1.17977575, + "max": 1.1896711659999994 + }, + "refine: setup + output": { + "median": 0.25655571100000074, + "min": 0.2562801210000005, + "max": 0.25747379299999995 + }, + "edge strip: generate": { + "median": 0.001067875, + "min": 0.001059792, + "max": 0.001085375 + }, + "edge strip: scan (parallel)": { + "median": 0.009431124, + "min": 0.009402165999999998, + "max": 0.009484958 + }, + "edge strip: split + flip (serial)": { + "median": 0.013071624, + "min": 0.012965457999999997, + "max": 0.013226416000000001 + }, + "trim": { + "median": 0.117721459, + "min": 0.117681, + "max": 0.117933542 + }, + "write: encode": { + "median": 0.044901708, + "min": 0.044475291, + "max": 0.045232375 + }, + "write: disk": { + "median": 0.026688542, + "min": 0.02042975, + "max": 0.069523875 + } + } + } + } +} diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-1.log b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-1.log new file mode 100644 index 00000000..5badb7b9 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-1.log @@ -0,0 +1,32 @@ +# run 1 (judge against stored baseline), 2026-10-12 15:19:24 +0200 +## pmset before +Now drawing from 'AC Power' + -InternalBattery-0 (id=24117347) 100%; charged; 0:00 remaining present: true +## uptime +15:19 up 13 days, 4:25, 4 users, load averages: 2.74 4.29 5.58 +SLOWER: tile t=1 total 0.70 -> 0.78 s (+10.9 %, band 5.0 %) +SLOWER: tile t=1 refine 0.47 -> 0.52 s (+11.2 %, band 5.0 %) +SLOWER: numedalslagen total 8.83 -> 9.48 s (+7.3 %, band 5.0 %) +SLOWER: numedalslagen decode 0.92 -> 1.00 s (+8.5 %, band 5.0 %) +SLOWER: numedalslagen features clip 6.00 -> 6.38 s (+6.3 %, band 5.0 %) +SLOWER: numedalslagen features clip: clean-up 5.94 -> 6.31 s (+6.3 %, band 5.0 %) +SLOWER: lagan total 14.54 -> 15.49 s (+6.5 %, band 5.0 %) +SLOWER: lagan features read 0.92 -> 1.10 s (+19.8 %, band 5.5 %) +SLOWER: lagan features clip 6.34 -> 6.69 s (+5.5 %, band 5.0 %) +SLOWER: lagan features clip: clean-up 5.39 -> 5.68 s (+5.4 %, band 5.0 %) +SLOWER: romsdal-slope total 3.58 -> 3.92 s (+9.5 %, band 5.0 %) +SLOWER: romsdal-slope refine 2.01 -> 2.24 s (+11.3 %, band 5.0 %) +SLOWER: romsdal-slope refine: scan (parallel) 0.56 -> 0.63 s (+11.5 %, band 5.0 %) +SLOWER: romsdal-slope refine: split + flip (serial) 1.18 -> 1.33 s (+12.5 %, band 5.0 %) +HOTSPOT: tile refine 44 % of the run (not in hotspots.toml) +HOTSPOT: tile t=1 refine 68 % of the run (not in hotspots.toml) +HOTSPOT: tile t=1 refine: scan (parallel) 50 % of the run (not in hotspots.toml) +HOTSPOT: quarter refine 46 % of the run (not in hotspots.toml) +HOTSPOT: numedalslagen features clip: clean-up 67 % of the run (not in hotspots.toml) +HOTSPOT: geilo-al-ramp decode 43 % of the run (not in hotspots.toml) +HOTSPOT: romsdal-slope refine 57 % of the run (not in hotspots.toml) +SLOWER +exit 1 +## pmset after +Now drawing from 'AC Power' + -InternalBattery-0 (id=24117347) 100%; charged; 0:00 remaining present: true diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-2-save.log b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-2-save.log new file mode 100644 index 00000000..d347f1df --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-2-save.log @@ -0,0 +1,37 @@ +# run 2 (--save-baseline), 2026-10-12 15:30:37 +0200 +## pmset before +Now drawing from 'AC Power' + -InternalBattery-0 (id=24117347) 100%; charged; 0:00 remaining present: true +## uptime +15:30 up 13 days, 4:36, 4 users, load averages: 3.02 3.43 4.32 +SLOWER: tile t=1 total 0.70 -> 0.79 s (+12.8 %, band 5.0 %) +SLOWER: tile t=1 refine 0.47 -> 0.54 s (+15.5 %, band 5.0 %) +SLOWER: tile t=1 refine: scan (parallel) 0.35 -> 0.40 s (+14.3 %, band 5.0 %) +SLOWER: numedalslagen total 8.83 -> 9.34 s (+5.8 %, band 5.0 %) +SLOWER: numedalslagen decode 0.92 -> 0.99 s (+7.1 %, band 5.0 %) +SLOWER: numedalslagen features clip 6.00 -> 6.34 s (+5.7 %, band 5.0 %) +SLOWER: numedalslagen features clip: clean-up 5.94 -> 6.28 s (+5.7 %, band 5.0 %) +SLOWER: numedalslagen refine 0.66 -> 0.72 s (+9.1 %, band 5.0 %) +SLOWER: lagan total 14.54 -> 15.48 s (+6.5 %, band 5.0 %) +SLOWER: lagan features read 0.92 -> 1.09 s (+18.7 %, band 5.5 %) +SLOWER: lagan features clip 6.34 -> 6.74 s (+6.2 %, band 5.0 %) +SLOWER: lagan features clip: clean-up 5.39 -> 5.73 s (+6.2 %, band 5.0 %) +SLOWER: romsdal-slope total 3.58 -> 3.88 s (+8.3 %, band 5.0 %) +SLOWER: romsdal-slope refine 2.01 -> 2.24 s (+11.4 %, band 5.0 %) +SLOWER: romsdal-slope refine: scan (parallel) 0.56 -> 0.63 s (+10.9 %, band 5.0 %) +SLOWER: romsdal-slope refine: split + flip (serial) 1.18 -> 1.34 s (+12.9 %, band 5.0 %) +HOTSPOT: tile refine 44 % of the run (not in hotspots.toml) +HOTSPOT: tile t=1 refine 69 % of the run (not in hotspots.toml) +HOTSPOT: tile t=1 refine: scan (parallel) 51 % of the run (not in hotspots.toml) +HOTSPOT: quarter refine 47 % of the run (not in hotspots.toml) +HOTSPOT: numedalslagen features clip: clean-up 67 % of the run (not in hotspots.toml) +HOTSPOT: geilo-al-ramp decode 44 % of the run (not in hotspots.toml) +HOTSPOT: romsdal-slope refine 58 % of the run (not in hotspots.toml) +baseline saved: /Users/skavhaug/projects/rasputin/.claude/worktrees/baseline-1012/docs/benchmarks/quick/baseline-ac.json +SLOWER +exit 1 +## pmset after +Now drawing from 'AC Power' + -InternalBattery-0 (id=24117347) 100%; charged; 0:00 remaining present: true +## uptime after +15:32 up 13 days, 4:39, 4 users, load averages: 4.51 3.69 4.27 diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-3-idle-save.log b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-3-idle-save.log new file mode 100644 index 00000000..6da64fd7 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-3-idle-save.log @@ -0,0 +1,51 @@ +# run 3 (wait for load < 1.5, then --save-baseline), started 2026-10-12 15:34:34 +0200 +15:34:34 load1 2.58 +15:35:04 load1 2.38 +15:35:34 load1 3.10 +15:36:04 load1 2.91 +15:36:34 load1 2.30 +15:37:04 load1 2.74 +15:37:34 load1 2.21 +15:38:04 load1 2.49 +15:38:46 load1 2.45 +15:40:01 load1 2.51 +16:00:17 load1 3.89 +16:00:47 load1 3.72 +16:01:17 load1 3.61 +16:01:47 load1 2.92 +16:02:17 load1 3.51 +16:02:47 load1 3.50 +16:03:17 load1 2.76 +16:03:48 load1 2.37 +16:04:18 load1 2.28 +16:04:48 load1 3.02 +16:05:18 load1 2.93 +16:05:48 load1 2.38 +16:06:18 load1 1.90 +16:06:48 load1 1.87 +16:07:18 load1 1.94 +16:07:48 load1 1.87 +16:08:18 load1 1.71 +16:08:48 load1 2.13 +16:09:18 load1 1.89 +16:09:48 load1 2.10 +16:10:18 load1 1.81 +16:10:48 load1 1.50 +16:11:18 load1 2.44 +16:11:49 load1 2.29 +16:12:19 load1 2.05 +16:12:49 load1 1.86 +16:13:19 load1 1.76 +16:13:49 load1 1.84 +16:14:19 load1 1.97 +16:14:49 load1 1.90 +16:15:19 load1 2.26 +16:15:49 load1 3.75 +16:16:19 load1 3.75 +16:16:49 load1 3.64 +16:17:19 load1 3.58 +16:17:49 load1 2.68 +16:18:19 load1 3.60 +16:18:49 load1 4.61 +16:19:19 load1 5.11 +GAVE UP: the load never fell under 1.5 on two samples before 16:19:49 diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-4-idle-save.log b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-4-idle-save.log new file mode 100644 index 00000000..77c4aed9 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-4-idle-save.log @@ -0,0 +1,58 @@ +# run 4 (wait for load < 2.0 twice, then --save-baseline), started 2026-10-12 20:15:03 +0200 +20:15:03 load1 2.06 +20:15:34 load1 2.09 +20:16:04 load1 2.94 +20:16:34 load1 3.32 +20:17:04 load1 3.31 +20:17:34 load1 2.81 +20:18:04 load1 2.97 +20:18:34 load1 3.03 +20:19:04 load1 2.47 +20:19:34 load1 2.03 +20:20:04 load1 2.74 +20:20:34 load1 2.34 +20:21:04 load1 2.04 +20:21:34 load1 2.09 +20:22:04 load1 2.56 +20:22:34 load1 2.50 +20:23:04 load1 2.50 +20:23:34 load1 2.73 +20:24:04 load1 3.04 +20:24:34 load1 2.63 +20:25:04 load1 2.25 +20:25:34 load1 2.10 +20:26:04 load1 2.43 +20:26:34 load1 2.65 +20:27:05 load1 3.37 +20:27:35 load1 3.04 +20:28:05 load1 2.91 +20:28:35 load1 2.51 +20:29:05 load1 1.96 +20:29:35 load1 1.76 +## pmset before +Now drawing from 'AC Power' + -InternalBattery-0 (id=24117347) 100%; charged; 0:00 remaining present: true +## uptime +20:29 up 13 days, 9:35, 5 users, load averages: 1.76 2.49 5.13 +## top CPU users + 75.2 /Applications/iTerm.app/Contents/XPCServices/pidinfo.xpc/Contents/MacOS/pidinfo + 16.2 /Applications/iTerm.app/Contents/MacOS/iTerm2 + 5.1 /System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent + 3.8 /System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/Contents/MacOS/Safari + 3.7 /Applications/Xerox/Xerox Workplace Cloud Client.app/Contents/MacOS/Xerox Workplace Cloud Client + 1.7 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder +HOTSPOT: tile refine 45 % of the run (not in hotspots.toml) +HOTSPOT: tile t=1 refine 66 % of the run (not in hotspots.toml) +HOTSPOT: tile t=1 refine: scan (parallel) 50 % of the run (not in hotspots.toml) +HOTSPOT: quarter refine 47 % of the run (not in hotspots.toml) +HOTSPOT: numedalslagen features clip: clean-up 67 % of the run (not in hotspots.toml) +HOTSPOT: geilo-al-ramp decode 43 % of the run (not in hotspots.toml) +HOTSPOT: romsdal-slope refine 55 % of the run (not in hotspots.toml) +baseline saved: /Users/skavhaug/projects/rasputin/.claude/worktrees/baseline-1012/docs/benchmarks/quick/baseline-ac.json +NO BASELINE: input $RASPUTIN_DATA/sweden_glo30_cache changed +exit 2 +## pmset after +Now drawing from 'AC Power' + -InternalBattery-0 (id=24117347) 100%; charged; 0:00 remaining present: true +## uptime after +20:31 up 13 days, 9:37, 5 users, load averages: 4.98 3.19 5.02 diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-5-increment-38.log b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-5-increment-38.log new file mode 100644 index 00000000..42e5463d --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-5-increment-38.log @@ -0,0 +1,29 @@ +# run 5 (increment 38, --tree /Users/skavhaug/projects/rasputin/.claude/worktrees/threads, judged against the baseline run 4 saved), started 2026-10-12 20:31:45 +0200 +## tree 38 head +8f9289c49f69b95e6e9207a3b2f80ab2467d3351 +## pmset before +Now drawing from 'AC Power' + -InternalBattery-0 (id=24117347) 100%; charged; 0:00 remaining present: true +## uptime +20:31 up 13 days, 9:37, 5 users, load averages: 4.98 3.19 5.02 +## top CPU users + 75.6 /Applications/iTerm.app/Contents/XPCServices/pidinfo.xpc/Contents/MacOS/pidinfo + 11.0 /Applications/iTerm.app/Contents/MacOS/iTerm2 + 3.5 /usr/libexec/airportd + 3.4 /Applications/Xerox/Xerox Workplace Cloud Client.app/Contents/MacOS/Xerox Workplace Cloud Client + 3.0 /System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent + 2.8 /System/Volumes/Preboot/Cryptexes/App/System/Applications/Safari.app/Contents/MacOS/Safari +HOTSPOT: tile refine 45 % of the run (not in hotspots.toml) +HOTSPOT: tile t=1 refine 67 % of the run (not in hotspots.toml) +HOTSPOT: tile t=1 refine: scan (parallel) 50 % of the run (not in hotspots.toml) +HOTSPOT: quarter refine 47 % of the run (not in hotspots.toml) +HOTSPOT: numedalslagen features clip: clean-up 67 % of the run (not in hotspots.toml) +HOTSPOT: geilo-al-ramp decode 43 % of the run (not in hotspots.toml) +HOTSPOT: romsdal-slope refine 56 % of the run (not in hotspots.toml) +NO CHANGE +exit 0 +## pmset after +Now drawing from 'AC Power' + -InternalBattery-0 (id=24117347) 100%; charged; 0:00 remaining present: true +## uptime after +20:34 up 13 days, 9:40, 5 users, load averages: 3.57 3.24 4.73 diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/raw/delta-old-357808b1-vs-new-969c49e2.md b/docs/benchmarks/2026-10-12/baseline-refresh/raw/delta-old-357808b1-vs-new-969c49e2.md new file mode 100644 index 00000000..86ddfcc0 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/raw/delta-old-357808b1-vs-new-969c49e2.md @@ -0,0 +1,58 @@ +# Stored baseline `357808b1` (2026-10-11) vs the refreshed baseline `969c49e2` (run 4, 2026-10-12 20:29, idle, AC) + +Every phase at 5 % or more of its case's total, as `bench_quick.verdict` +selects them; band = max(5 %, the old record's (max - min) / median). The +tool itself printed `NO BASELINE: input $RASPUTIN_DATA/sweden_glo30_cache +changed` (the Lagan GLO-30 cache gained tiles), so this table was made by +calling `verdict` on the two records with the old inputs substituted into +the new one (`.venv/bin/python`, `tools/bench_quick.py` at `969c49e2`); the +judge lines it gives are: + + SLOWER: lagan features read 0.92 -> 1.03 s (+12.1 %, band 5.5 %) + +No `MESH CHANGED`, no `BROKEN`; every case's mesh SHA-256 and `max_error` +equal the stored ones. + +| line | old s | new s | change | band | +|---|---:|---:|---:|---:| +| tile total | 0.416 | 0.430 | +3.3 % | 5.0 % | +| tile decode | 0.060 | 0.070 | +15.8 % | 5.5 % | +| tile start mesh: triangulate | 0.029 | 0.029 | -0.1 % | 5.0 % | +| tile refine | 0.190 | 0.192 | +1.2 % | 5.0 % | +| tile refine: scan (parallel) | 0.056 | 0.057 | +1.5 % | 5.0 % | +| tile refine: split + flip (serial) | 0.106 | 0.108 | +1.3 % | 6.2 % | +| tile refine: setup + output | 0.025 | 0.026 | +4.0 % | 5.0 % | +| tile t=1 total | 0.699 | 0.711 | +1.7 % | 5.0 % | +| tile t=1 decode | 0.060 | 0.068 | +13.3 % | 5.8 % | +| tile t=1 refine | 0.472 | 0.473 | +0.2 % | 5.0 % | +| tile t=1 refine: scan (parallel) | 0.352 | 0.352 | +0.1 % | 5.0 % | +| tile t=1 refine: split + flip (serial) | 0.094 | 0.094 | -0.1 % | 5.0 % | +| quarter total | 0.355 | 0.366 | +3.1 % | 5.0 % | +| quarter decode | 0.044 | 0.051 | +15.9 % | 5.7 % | +| quarter refine | 0.172 | 0.171 | -0.4 % | 5.6 % | +| quarter refine: scan (parallel) | 0.045 | 0.046 | +1.2 % | 5.0 % | +| quarter refine: split + flip (serial) | 0.107 | 0.106 | -1.4 % | 7.8 % | +| numedalslagen total | 8.829 | 8.894 | +0.7 % | 5.0 % | +| numedalslagen decode | 0.921 | 0.950 | +3.2 % | 5.0 % | +| numedalslagen features clip | 6.000 | 6.022 | +0.4 % | 5.0 % | +| numedalslagen features clip: clean-up | 5.937 | 5.956 | +0.3 % | 5.0 % | +| numedalslagen refine | 0.659 | 0.661 | +0.4 % | 5.0 % | +| lagan total | 14.542 | 14.736 | +1.3 % | 5.0 % | +| lagan decode | 4.578 | 4.615 | +0.8 % | 5.0 % | +| lagan features read | 0.922 | 1.033 | +12.1 % | 5.5 % | +| lagan features clip | 6.342 | 6.353 | +0.2 % | 5.0 % | +| lagan features clip: clean-up | 5.392 | 5.397 | +0.1 % | 5.0 % | +| geilo-al-ramp total | 0.329 | 0.344 | +4.7 % | 5.0 % | +| geilo-al-ramp decode | 0.138 | 0.148 | +7.2 % | 5.0 % | +| geilo-al-ramp refine | 0.099 | 0.101 | +1.5 % | 5.0 % | +| geilo-al-ramp refine: scan (parallel) | 0.083 | 0.083 | +1.0 % | 5.0 % | +| romsdal-slope total | 3.578 | 3.624 | +1.3 % | 5.0 % | +| romsdal-slope refine | 2.009 | 2.010 | +0.1 % | 5.0 % | +| romsdal-slope refine: scan (parallel) | 0.564 | 0.567 | +0.6 % | 5.0 % | +| romsdal-slope refine: split + flip (serial) | 1.184 | 1.183 | -0.1 % | 5.0 % | +| romsdal-slope refine: setup + output | 0.257 | 0.262 | +2.1 % | 5.0 % | + +The small `decode` phases (tile, tile t=1, quarter, geilo-al-ramp: +7 to ++16 %) are over their percentage band but under the tool's 0.05 s floor +(0.007 to 0.010 s each), so the tool does not flag them; `lagan decode`, +the one large decode, is +0.8 %. diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/raw/delta-stored-vs-loaded-1530.md b/docs/benchmarks/2026-10-12/baseline-refresh/raw/delta-stored-vs-loaded-1530.md new file mode 100644 index 00000000..b286a983 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/raw/delta-stored-vs-loaded-1530.md @@ -0,0 +1,40 @@ +stored baseline commit 357808b1 vs run 2 (15:30, loaded machine) commit c317c7e4; medians of the timed runs, seconds + +| case | phase | stored | run 2 | change | mesh same | +|---|---|---:|---:|---:|---| +| tile | total | 0.416 | 0.453 | +8.9 % | yes | +| tile | decode | 0.060 | 0.067 | +12.1 % | | +| tile | start mesh: triangulate | 0.029 | 0.030 | +2.5 % | | +| tile | refine | 0.190 | 0.201 | +5.9 % | | +| tile | refine: scan (parallel) | 0.056 | 0.061 | +8.0 % | | +| tile | refine: split + flip (serial) | 0.106 | 0.113 | +6.3 % | | +| tile | refine: setup + output | 0.025 | 0.027 | +6.4 % | | +| tile t=1 | total | 0.699 | 0.789 | +12.8 % | yes | +| tile t=1 | decode | 0.060 | 0.068 | +13.3 % | | +| tile t=1 | refine | 0.472 | 0.545 | +15.5 % | | +| tile t=1 | refine: scan (parallel) | 0.352 | 0.402 | +14.3 % | | +| tile t=1 | refine: split + flip (serial) | 0.094 | 0.113 | +20.5 % | | +| quarter | total | 0.355 | 0.388 | +9.3 % | yes | +| quarter | decode | 0.044 | 0.053 | +20.1 % | | +| quarter | refine | 0.172 | 0.181 | +5.4 % | | +| quarter | refine: scan (parallel) | 0.045 | 0.050 | +9.9 % | | +| quarter | refine: split + flip (serial) | 0.107 | 0.112 | +4.1 % | | +| numedalslagen | total | 8.829 | 9.343 | +5.8 % | yes | +| numedalslagen | decode | 0.921 | 0.986 | +7.1 % | | +| numedalslagen | features clip | 6.000 | 6.342 | +5.7 % | | +| numedalslagen | features clip: clean-up | 5.937 | 6.275 | +5.7 % | | +| numedalslagen | refine | 0.659 | 0.719 | +9.1 % | | +| lagan | total | 14.542 | 15.483 | +6.5 % | yes | +| lagan | decode | 4.578 | 4.783 | +4.5 % | | +| lagan | features read | 0.922 | 1.094 | +18.7 % | | +| lagan | features clip | 6.342 | 6.737 | +6.2 % | | +| lagan | features clip: clean-up | 5.392 | 5.726 | +6.2 % | | +| geilo-al-ramp | total | 0.329 | 0.364 | +10.9 % | yes | +| geilo-al-ramp | decode | 0.138 | 0.159 | +15.0 % | | +| geilo-al-ramp | refine | 0.099 | 0.107 | +7.9 % | | +| geilo-al-ramp | refine: scan (parallel) | 0.083 | 0.089 | +7.3 % | | +| romsdal-slope | total | 3.578 | 3.876 | +8.3 % | yes | +| romsdal-slope | refine | 2.009 | 2.238 | +11.4 % | | +| romsdal-slope | refine: scan (parallel) | 0.564 | 0.625 | +10.9 % | | +| romsdal-slope | refine: split + flip (serial) | 1.184 | 1.337 | +12.9 % | | +| romsdal-slope | refine: setup + output | 0.257 | 0.276 | +7.5 % | | diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/raw/evening_idle_save_then_38.sh b/docs/benchmarks/2026-10-12/baseline-refresh/raw/evening_idle_save_then_38.sh new file mode 100644 index 00000000..e8ae17a8 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/raw/evening_idle_save_then_38.sh @@ -0,0 +1,39 @@ +#!/bin/zsh +# Evening, 2026-10-12. Wait until the 1-minute load average is under 2.0 on +# two samples 30 s apart (at most 30 minutes), then: +# run 4: the quick check on this tree (master f09b9863 merged in) with +# --save-baseline, judged against the stored 357808b1 baseline; +# run 5: increment 38's tree (worktrees/threads) judged against the +# baseline run 4 just saved. Nothing else of ours runs beside them. +set -u +TREE=/Users/skavhaug/projects/rasputin/.claude/worktrees/baseline-1012 +TREE38=/Users/skavhaug/projects/rasputin/.claude/worktrees/threads +DIR=$TREE/docs/benchmarks/2026-10-12/baseline-refresh +LOG4=$DIR/quick-run-4-idle-save.log +LOG5=$DIR/quick-run-5-increment-38.log +cd "$TREE" || exit 3 +deadline=$(( $(date +%s) + 30 * 60 )) +low=0 +echo "# run 4 (wait for load < 2.0 twice, then --save-baseline), started $(date '+%Y-%m-%d %H:%M:%S %z')" > "$LOG4" +while [ "$(date +%s)" -lt "$deadline" ]; do + load=$(sysctl -n vm.loadavg | awk '{print $2}') + echo "$(date +%H:%M:%S) load1 $load" >> "$LOG4" + if [ "$(echo "$load < 2.0" | bc)" = 1 ]; then low=$((low + 1)); else low=0; fi + if [ "$low" -ge 2 ]; then + { echo "## pmset before"; pmset -g batt; echo "## uptime"; uptime; + echo "## top CPU users"; ps -eo pcpu,comm | sort -rn | head -6; } >> "$LOG4" + RASPUTIN_DATA=/Users/skavhaug/projects/rasputin_data .venv/bin/python tools/bench_quick.py run --save-baseline >> "$LOG4" 2>&1 + echo "exit $?" >> "$LOG4" + { echo "## pmset after"; pmset -g batt; echo "## uptime after"; uptime; } >> "$LOG4" + echo "# run 5 (increment 38, --tree $TREE38, judged against the baseline run 4 saved), started $(date '+%Y-%m-%d %H:%M:%S %z')" > "$LOG5" + { echo "## tree 38 head"; git -C "$TREE38" rev-parse HEAD; echo "## pmset before"; pmset -g batt; echo "## uptime"; uptime; + echo "## top CPU users"; ps -eo pcpu,comm | sort -rn | head -6; } >> "$LOG5" + RASPUTIN_DATA=/Users/skavhaug/projects/rasputin_data .venv/bin/python tools/bench_quick.py run --tree "$TREE38" >> "$LOG5" 2>&1 + echo "exit $?" >> "$LOG5" + { echo "## pmset after"; pmset -g batt; echo "## uptime after"; uptime; } >> "$LOG5" + exit 0 + fi + sleep 30 +done +echo "GAVE UP: the load never fell under 2.0 on two samples before $(date '+%H:%M:%S')" >> "$LOG4" +exit 4 diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/raw/lagan-plain-runs.jsonl b/docs/benchmarks/2026-10-12/baseline-refresh/raw/lagan-plain-runs.jsonl new file mode 100644 index 00000000..b79f6e4a --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/raw/lagan-plain-runs.jsonl @@ -0,0 +1,6 @@ +{"tree":"old","run":1,"bench": {"refine_s": 0.254810166079551, "app_s": 15.5025962080108, "max_error": 9.999904677002576, "rounds": 18, "inserted": 89957, "flips": 228288, "hardening": "libc++ fast", "total_s": 15.49061125, "phases": {"domain read": 0.047272959, "decode": 4.772437958, "features read": 1.1070569030707702, "features clip": 6.730989263858646, "features clip: clean-up": 5.744550041970797, "start mesh: build": 0.00361925, "start mesh: node": 0.32073675, "start mesh: triangulate": 0.091020042, "start mesh: constraint edges": 0.2261185, "refine": 0.254842333, "refine: legalise start": 0.004466833, "refine: start quality": 0.06998875, "refine: scan (parallel)": 0.062432707999999996, "refine: split + flip (serial)": 0.05908304100000001, "refine: setup + output": 0.05887100099999998, "edge strip: generate": 0.04405875, "check points: project": 0.6820140873314813, "check points: store": 0.28006945468621386, "final check: scan (parallel)": 0.297217, "final check: split + flip (serial)": 0.040978582, "trim": 0.019001833, "land cover": 0.211632083, "write: encode": 0.008202458, "write: disk": 0.012248209}}} +{"tree":"new","run":1,"bench": {"refine_s": 0.26488420797977597, "app_s": 15.581828458001837, "max_error": 9.999904677002576, "rounds": 18, "inserted": 89957, "flips": 228288, "hardening": "libc++ fast", "total_s": 15.569284583, "phases": {"domain read": 0.046486042, "decode": 4.760526375, "features read": 1.1309317838167772, "features clip": 6.782271383097395, "features clip: clean-up": 5.740673583932221, "start mesh: build": 0.003332708, "start mesh: node": 0.312553875, "start mesh: triangulate": 0.091905917, "start mesh: constraint edges": 0.221933334, "refine": 0.264917583, "refine: legalise start": 0.004503083, "refine: start quality": 0.07453575, "refine: scan (parallel)": 0.06894679400000002, "refine: split + flip (serial)": 0.057723580999999996, "refine: setup + output": 0.05920837500000001, "edge strip: generate": 0.046787208, "check points: project": 0.6889762914506719, "check points: store": 0.28179145856231136, "final check: scan (parallel)": 0.2996589999999999, "final check: split + flip (serial)": 0.042011418999999994, "trim": 0.0194015, "land cover": 0.2123685, "write: encode": 0.008035625, "write: disk": 0.013050292}}} +{"tree":"old","run":2,"bench": {"refine_s": 0.24894316704012454, "app_s": 15.28243420808576, "max_error": 9.999904677002576, "rounds": 18, "inserted": 89957, "flips": 228288, "hardening": "libc++ fast", "total_s": 15.270279917, "phases": {"domain read": 0.046708, "decode": 4.746606791, "features read": 1.1331501099048182, "features clip": 6.541201932122931, "features clip: clean-up": 5.5428702080389485, "start mesh: build": 0.003248542, "start mesh: node": 0.30889725, "start mesh: triangulate": 0.087754667, "start mesh: constraint edges": 0.201382709, "refine": 0.248979042, "refine: legalise start": 0.004337625, "refine: start quality": 0.062581834, "refine: scan (parallel)": 0.06401149699999997, "refine: split + flip (serial)": 0.060656876, "refine: setup + output": 0.057391210000000026, "edge strip: generate": 0.041843584, "check points: project": 0.7052432431373745, "check points: store": 0.2780911309445936, "final check: scan (parallel)": 0.295289791, "final check: split + flip (serial)": 0.041114207, "trim": 0.019330833, "land cover": 0.213708292, "write: encode": 0.008309875, "write: disk": 0.01162975}}} +{"tree":"new","run":2,"bench": {"refine_s": 0.2629793749656528, "app_s": 15.553417750052176, "max_error": 9.999904677002576, "rounds": 18, "inserted": 89957, "flips": 228288, "hardening": "libc++ fast", "total_s": 15.540982208, "phases": {"domain read": 0.046765375, "decode": 4.771298709, "features read": 1.1028321152552962, "features clip": 6.762040967703797, "features clip: clean-up": 5.762504249927588, "start mesh: build": 0.003520125, "start mesh: node": 0.31292225, "start mesh: triangulate": 0.09154775, "start mesh: constraint edges": 0.223612042, "refine": 0.263016208, "refine: legalise start": 0.004418375, "refine: start quality": 0.074442917, "refine: scan (parallel)": 0.064212539, "refine: split + flip (serial)": 0.061927833999999994, "refine: setup + output": 0.058014542999999974, "edge strip: generate": 0.043500833, "check points: project": 0.6786329164169729, "check points: store": 0.28495370854598284, "final check: scan (parallel)": 0.2930762519999999, "final check: split + flip (serial)": 0.041293582, "trim": 0.020288291, "land cover": 0.243144625, "write: encode": 0.008461791, "write: disk": 0.004099292}}} +{"tree":"old","run":3,"bench": {"refine_s": 0.2612497080117464, "app_s": 15.512547209043987, "max_error": 9.999904677002576, "rounds": 18, "inserted": 89957, "flips": 228288, "hardening": "libc++ fast", "total_s": 15.500557666, "phases": {"domain read": 0.046589667, "decode": 4.766169625, "features read": 1.0925908016506582, "features clip": 6.73266732331831, "features clip: clean-up": 5.722619750071317, "start mesh: build": 0.003307292, "start mesh: node": 0.323448916, "start mesh: triangulate": 0.091361042, "start mesh: constraint edges": 0.220533167, "refine": 0.261286125, "refine: legalise start": 0.004649834, "refine: start quality": 0.075448958, "refine: scan (parallel)": 0.06368779, "refine: split + flip (serial)": 0.059157166, "refine: setup + output": 0.058342377, "edge strip: generate": 0.045263541, "check points: project": 0.7140497468644753, "check points: store": 0.2828833371105355, "final check: scan (parallel)": 0.2948787500000001, "final check: split + flip (serial)": 0.041087750000000006, "trim": 0.019170833, "land cover": 0.211919458, "write: encode": 0.008297417, "write: disk": 0.0109515}}} +{"tree":"new","run":3,"bench": {"refine_s": 0.262434667092748, "app_s": 15.524189541931264, "max_error": 9.999904677002576, "rounds": 18, "inserted": 89957, "flips": 228288, "hardening": "libc++ fast", "total_s": 15.511099959, "phases": {"domain read": 0.047049, "decode": 4.782878208, "features read": 1.1019477323861793, "features clip": 6.760739725665189, "features clip: clean-up": 5.750452209031209, "start mesh: build": 0.003593916, "start mesh: node": 0.311633334, "start mesh: triangulate": 0.091970334, "start mesh: constraint edges": 0.221218375, "refine": 0.262469958, "refine: legalise start": 0.004386, "refine: start quality": 0.075812417, "refine: scan (parallel)": 0.06291353999999999, "refine: split + flip (serial)": 0.061582373, "refine: setup + output": 0.05777562800000002, "edge strip: generate": 0.043940792, "check points: project": 0.6762596678454429, "check points: store": 0.28200558214986005, "final check: scan (parallel)": 0.291785293, "final check: split + flip (serial)": 0.041089041999999985, "trim": 0.019313459, "land cover": 0.212601667, "write: encode": 0.008313542, "write: disk": 0.004433459}}} diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/raw/lagan-profile-read-path.txt b/docs/benchmarks/2026-10-12/baseline-refresh/raw/lagan-profile-read-path.txt new file mode 100644 index 00000000..bb0b2640 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/raw/lagan-profile-read-path.txt @@ -0,0 +1,190 @@ +Lagan case under cProfile, two runs per tree, alternating old/new (2026-10-12 15:25-15:27 local, AC). +old = 357808b1 (the stored baseline's commit, .so sha256 51872f0a...), new = c317c7e4 (master, .so 55bb3993...). +Meshes of all four runs: sha256 6c110f9eb1fb6a741bd4a19a954a91b7a7424d43f7ba04c354d25f9a42495fa0. + + +######## old-1: profiled total 16.63 s; read-path functions by cumulative time +Mon Oct 12 15:25:49 2026 /private/tmp/claude-501/-Users-skavhaug-projects-rasputin/6a989a29-4492-430f-99b0-9fe3058f931a/scratchpad/lagan-old-1.prof + + 4459643 function calls (4450810 primitive calls) in 16.630 seconds + + Random listing order was used + List reduced from 1522 to 94 due to restriction <'feature_input|geopackage|repository|crs\\.py|land_cover\\.py'> + List reduced from 94 to 20 due to restriction <20> + + ncalls tottime percall cumtime percall filename:lineno(function) + 175/60 0.003 0.000 0.457 0.008 crs.py:224(_transformer) + 111/34 0.003 0.000 0.319 0.009 crs.py:50(reprojector) + 2 0.000 0.000 0.005 0.003 crs.py:86(transform_description) + 2 0.000 0.000 0.007 0.004 crs.py:135(transform_label) + 8 0.000 0.000 0.018 0.002 crs.py:96(same_crs) + 3 0.000 0.000 0.000 0.000 crs.py:152(crs_label) + 363 0.000 0.000 0.156 0.000 crs.py:40(parse_crs) + 1 0.000 0.000 0.000 0.000 crs.py:140(single_crs) + 60 0.000 0.000 0.000 0.000 crs.py:352(_crs) + 108 0.000 0.000 0.001 0.000 repository.py:189(_path) + 346 0.000 0.000 0.001 0.000 crs.py:155(_is_epsg_code) + 8 0.001 0.000 0.001 0.000 crs.py:961(equals) + 8 0.000 0.000 0.018 0.002 crs.py:124(_equivalent_xy) + 362 0.001 0.000 0.001 0.000 crs.py:62(__init__) + 10 0.000 0.000 0.001 0.000 crs.py:381(from_epsg) + 10 0.000 0.000 0.000 0.000 crs.py:151(_prepare_from_epsg) + 1 0.000 0.000 0.000 0.000 crs.py:505(get_geod) + 1 0.000 0.000 0.000 0.000 crs.py:458(to_string) + 10 0.000 0.000 0.000 0.000 crs.py:147(_prepare_from_authority) + 704 0.001 0.000 0.156 0.000 crs.py:477(from_user_input) + + + +######## new-1: profiled total 16.53 s; read-path functions by cumulative time +Mon Oct 12 15:26:05 2026 /private/tmp/claude-501/-Users-skavhaug-projects-rasputin/6a989a29-4492-430f-99b0-9fe3058f931a/scratchpad/lagan-new-1.prof + + 4460981 function calls (4451978 primitive calls) in 16.535 seconds + + Random listing order was used + List reduced from 1527 to 94 due to restriction <'feature_input|geopackage|repository|crs\\.py|land_cover\\.py'> + List reduced from 94 to 20 due to restriction <20> + + ncalls tottime percall cumtime percall filename:lineno(function) + 111/35 0.003 0.000 0.344 0.010 crs.py:52(reprojector) + 8 0.000 0.000 0.018 0.002 crs.py:98(same_crs) + 3 0.000 0.000 0.000 0.000 crs.py:154(crs_label) + 2 0.000 0.000 0.005 0.002 crs.py:88(transform_description) + 2 0.000 0.000 0.006 0.003 crs.py:137(transform_label) + 342 0.000 0.000 0.001 0.000 crs.py:155(_is_epsg_code) + 359 0.000 0.000 0.162 0.000 crs.py:42(parse_crs) + 1 0.000 0.000 0.000 0.000 crs.py:142(single_crs) + 60 0.000 0.000 0.000 0.000 crs.py:352(_crs) + 8 0.001 0.000 0.001 0.000 crs.py:961(equals) + 173/61 0.003 0.000 0.733 0.012 crs.py:251(_transformer) + 8 0.000 0.000 0.018 0.002 crs.py:126(_equivalent_xy) + 358 0.001 0.000 0.001 0.000 crs.py:62(__init__) + 10 0.000 0.000 0.000 0.000 crs.py:151(_prepare_from_epsg) + 1 0.000 0.000 0.000 0.000 crs.py:505(get_geod) + 1 0.000 0.000 0.000 0.000 crs.py:458(to_string) + 10 0.000 0.000 0.000 0.000 crs.py:147(_prepare_from_authority) + 10 0.000 0.000 0.001 0.000 crs.py:381(from_epsg) + 696 0.001 0.000 0.162 0.000 crs.py:477(from_user_input) + 4 0.000 0.000 0.000 0.000 crs.py:1300(to_epsg) + + + +######## old-2: profiled total 16.59 s; read-path functions by cumulative time +Mon Oct 12 15:26:22 2026 /private/tmp/claude-501/-Users-skavhaug-projects-rasputin/6a989a29-4492-430f-99b0-9fe3058f931a/scratchpad/lagan-old-2.prof + + 4460489 function calls (4451308 primitive calls) in 16.590 seconds + + Random listing order was used + List reduced from 1522 to 94 due to restriction <'feature_input|geopackage|repository|crs\\.py|land_cover\\.py'> + List reduced from 94 to 20 due to restriction <20> + + ncalls tottime percall cumtime percall filename:lineno(function) + 182/63 0.002 0.000 0.594 0.009 crs.py:224(_transformer) + 111/37 0.003 0.000 0.441 0.012 crs.py:50(reprojector) + 2 0.000 0.000 0.005 0.002 crs.py:86(transform_description) + 2 0.000 0.000 0.006 0.003 crs.py:135(transform_label) + 8 0.000 0.000 0.017 0.002 crs.py:96(same_crs) + 3 0.000 0.000 0.000 0.000 crs.py:152(crs_label) + 377/375 0.000 0.000 0.180 0.000 crs.py:40(parse_crs) + 1 0.000 0.000 0.000 0.000 crs.py:140(single_crs) + 60 0.000 0.000 0.000 0.000 crs.py:352(_crs) + 108 0.000 0.000 0.001 0.000 repository.py:189(_path) + 360 0.000 0.000 0.001 0.000 crs.py:155(_is_epsg_code) + 8 0.001 0.000 0.001 0.000 crs.py:961(equals) + 8 0.000 0.000 0.017 0.002 crs.py:124(_equivalent_xy) + 376 0.001 0.000 0.001 0.000 crs.py:62(__init__) + 10 0.000 0.000 0.001 0.000 crs.py:381(from_epsg) + 10 0.000 0.000 0.000 0.000 crs.py:151(_prepare_from_epsg) + 1 0.000 0.000 0.000 0.000 crs.py:505(get_geod) + 1 0.000 0.000 0.000 0.000 crs.py:458(to_string) + 10 0.000 0.000 0.000 0.000 crs.py:147(_prepare_from_authority) + 732/728 0.001 0.000 0.179 0.000 crs.py:477(from_user_input) + + + +######## new-2: profiled total 16.52 s; read-path functions by cumulative time +Mon Oct 12 15:26:39 2026 /private/tmp/claude-501/-Users-skavhaug-projects-rasputin/6a989a29-4492-430f-99b0-9fe3058f931a/scratchpad/lagan-new-2.prof + + 4462069 function calls (4452848 primitive calls) in 16.520 seconds + + Random listing order was used + List reduced from 1527 to 94 due to restriction <'feature_input|geopackage|repository|crs\\.py|land_cover\\.py'> + List reduced from 94 to 20 due to restriction <20> + + ncalls tottime percall cumtime percall filename:lineno(function) + 111/33 0.003 0.000 0.431 0.013 crs.py:52(reprojector) + 8 0.000 0.000 0.018 0.002 crs.py:98(same_crs) + 3 0.000 0.000 0.000 0.000 crs.py:154(crs_label) + 2 0.000 0.000 0.005 0.003 crs.py:88(transform_description) + 2 0.000 0.000 0.007 0.003 crs.py:137(transform_label) + 356 0.000 0.000 0.001 0.000 crs.py:155(_is_epsg_code) + 373 0.000 0.000 0.182 0.000 crs.py:42(parse_crs) + 1 0.000 0.000 0.000 0.000 crs.py:142(single_crs) + 60 0.000 0.000 0.000 0.000 crs.py:352(_crs) + 8 0.001 0.000 0.001 0.000 crs.py:961(equals) + 180/58 0.006 0.000 0.749 0.013 crs.py:251(_transformer) + 8 0.000 0.000 0.018 0.002 crs.py:126(_equivalent_xy) + 372 0.001 0.000 0.001 0.000 crs.py:62(__init__) + 10 0.000 0.000 0.000 0.000 crs.py:151(_prepare_from_epsg) + 1 0.000 0.000 0.000 0.000 crs.py:505(get_geod) + 1 0.000 0.000 0.000 0.000 crs.py:458(to_string) + 10 0.000 0.000 0.000 0.000 crs.py:147(_prepare_from_authority) + 10 0.000 0.000 0.001 0.000 crs.py:381(from_epsg) + 724 0.001 0.000 0.183 0.000 crs.py:477(from_user_input) + 4 0.000 0.000 0.000 0.000 crs.py:1300(to_epsg) + + + +######## old-1: top 15 by own time (section 7's report; shares, not times) +Mon Oct 12 15:25:49 2026 /private/tmp/claude-501/-Users-skavhaug-projects-rasputin/6a989a29-4492-430f-99b0-9fe3058f931a/scratchpad/lagan-old-1.prof + + 4459643 function calls (4450810 primitive calls) in 16.630 seconds + + Random listing order was used + List reduced from 1522 to 15 due to restriction <15> + + ncalls tottime percall cumtime percall filename:lineno(function) + 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} + 14 0.000 0.000 0.000 0.000 :304(acquire) + 10 0.000 0.000 0.001 0.000 :1243(_find_spec) + 6/1 0.000 0.000 0.006 0.006 :1409(_handle_fromlist) + 690 0.000 0.000 0.000 0.000 {built-in method _struct.calcsize} + 9286 0.001 0.000 0.001 0.000 {built-in method _struct.unpack} + 5 0.000 0.000 0.000 0.000 {method 'find' of 'bytearray' objects} + 26 0.000 0.000 0.000 0.000 {method 'decode' of 'bytes' objects} + 11 0.001 0.000 0.001 0.000 {method 'join' of 'bytes' objects} + 11 0.000 0.000 0.000 0.000 {method 'rstrip' of 'bytes' objects} + 8 0.000 0.000 0.000 0.000 {method 'startswith' of 'bytes' objects} + 24 0.000 0.000 0.000 0.000 {method 'translate' of 'bytes' objects} + 12318 0.001 0.000 0.001 0.000 {method 'get' of 'mappingproxy' objects} + 84 0.000 0.000 0.000 0.000 {method 'values' of 'mappingproxy' objects} + 1 0.000 0.000 0.000 0.000 {method 'items' of 'mappingproxy' objects} + + + +######## new-1: top 15 by own time (section 7's report; shares, not times) +Mon Oct 12 15:26:05 2026 /private/tmp/claude-501/-Users-skavhaug-projects-rasputin/6a989a29-4492-430f-99b0-9fe3058f931a/scratchpad/lagan-new-1.prof + + 4460981 function calls (4451978 primitive calls) in 16.535 seconds + + Random listing order was used + List reduced from 1527 to 15 due to restriction <15> + + ncalls tottime percall cumtime percall filename:lineno(function) + 5 0.000 0.000 0.000 0.000 :750(create_module) + 5 0.000 0.000 0.000 0.000 :457(_validate_timestamp_pyc) + 1 0.000 0.000 0.000 0.000 _compiler.py:421(_generate_overlap_table) + 1 0.000 0.000 0.000 0.000 ast.py:72(_convert_signed_num) + 1 0.000 0.000 0.000 0.000 :1331(__init__) + 5 0.000 0.000 0.000 0.000 :48(_new_module) + 11 0.000 0.000 0.000 0.000 :185(_path_isabs) + 40 0.000 0.000 0.000 0.000 :1225(__enter__) + 40 0.000 0.000 0.000 0.000 :1229(__exit__) + 30 0.000 0.000 0.000 0.000 :145(_path_stat) + 8 0.000 0.000 0.000 0.000 :1337() + 10 0.000 0.000 0.000 0.000 :1352(_get_spec) + 24 0.000 0.000 0.000 0.000 :648(parent) + 10 0.000 0.000 0.000 0.000 :67(_relax_case) + 1 0.000 0.000 0.000 0.000 :166(basename) + + diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/raw/prof_mesh.py b/docs/benchmarks/2026-10-12/baseline-refresh/raw/prof_mesh.py new file mode 100644 index 00000000..e367ead4 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/raw/prof_mesh.py @@ -0,0 +1,27 @@ +"""Run `rasputin mesh ...` from a bench.py pkg tree under cProfile. + +usage: python prof_mesh.py mesh +""" + +import cProfile +import sys + +pkg, out = sys.argv[1], sys.argv[2] +sys.path.insert(0, pkg) +import tin_engine # noqa: E402 +import tin_engine._core # noqa: E402 + +for module in (tin_engine, tin_engine._core): + if not str(module.__file__).startswith(pkg): + raise SystemExit(f"{module.__file__} is not under {pkg}") +from tin_engine.cli import app # noqa: E402 + +sys.argv = ["rasputin", *sys.argv[3:]] +profile = cProfile.Profile() +profile.enable() +try: + app(standalone_mode=False) +except SystemExit: + pass +profile.disable() +profile.dump_stats(out) diff --git a/docs/benchmarks/2026-10-12/baseline-refresh/raw/wait_idle_then_save.sh b/docs/benchmarks/2026-10-12/baseline-refresh/raw/wait_idle_then_save.sh new file mode 100755 index 00000000..dd6754c9 --- /dev/null +++ b/docs/benchmarks/2026-10-12/baseline-refresh/raw/wait_idle_then_save.sh @@ -0,0 +1,25 @@ +#!/bin/zsh +# Wait until the 1-minute load average is under 1.5 on two samples 30 s apart +# (at most 45 minutes), then run the quick check with --save-baseline once. +set -u +TREE=/Users/skavhaug/projects/rasputin/.claude/worktrees/baseline-1012 +LOG=$TREE/docs/benchmarks/2026-10-12/baseline-refresh/quick-run-3-idle-save.log +cd "$TREE" || exit 3 +deadline=$(( $(date +%s) + 45 * 60 )) +low=0 +echo "# run 3 (wait for load < 1.5, then --save-baseline), started $(date '+%Y-%m-%d %H:%M:%S %z')" > "$LOG" +while [ "$(date +%s)" -lt "$deadline" ]; do + load=$(sysctl -n vm.loadavg | awk '{print $2}') + echo "$(date +%H:%M:%S) load1 $load" >> "$LOG" + if [ "$(echo "$load < 1.5" | bc)" = 1 ]; then low=$((low + 1)); else low=0; fi + if [ "$low" -ge 2 ]; then + { echo "## pmset before"; pmset -g batt; echo "## uptime"; uptime; } >> "$LOG" + RASPUTIN_DATA=/Users/skavhaug/projects/rasputin_data .venv/bin/python tools/bench_quick.py run --save-baseline >> "$LOG" 2>&1 + echo "exit $?" >> "$LOG" + { echo "## pmset after"; pmset -g batt; echo "## uptime after"; uptime; } >> "$LOG" + exit 0 + fi + sleep 30 +done +echo "GAVE UP: the load never fell under 1.5 on two samples before $(date '+%H:%M:%S')" >> "$LOG" +exit 4 diff --git a/docs/benchmarks/quick/baseline-ac.json b/docs/benchmarks/quick/baseline-ac.json index c4e09b53..88129626 100644 --- a/docs/benchmarks/quick/baseline-ac.json +++ b/docs/benchmarks/quick/baseline-ac.json @@ -1,5 +1,5 @@ { - "commit": "357808b1d23462b1ff5c71760a0a9943fff76dd4", + "commit": "969c49e2325491dfc2449f671b67d0f599d139ca", "machine": { "cpu_brand": "Apple M1 Max", "p_cores": 8, @@ -20,7 +20,7 @@ "$RASPUTIN_DATA/DTM10_UTM33_20260925": "dir:3eef3cfed8b6d7db435791da65386cc1dcbbbadc2a9b145567765eb67b1a3dac", "$RASPUTIN_DATA/numedalslagen_outline_nve.geojson": "file:554438:3069b1dbd2c22c87401fd57c3189f5a67d319f9aea0a95e90cc29886fa0dabca", "$RASPUTIN_DATA/corine2018_dtm10_utm33.gpkg": "file:440332288:1790574665364371436", - "$RASPUTIN_DATA/sweden_glo30_cache": "dir:3deaa80f96e39f4ae4b4d3df54646b17e47c70847fe450d9c3e377fe7d758e0f", + "$RASPUTIN_DATA/sweden_glo30_cache": "dir:f00da08071724a2a08e572e968895363735c53439f686134aa45b69f7cddc168", "$RASPUTIN_DATA/sweden_smhi_svar/lagan_mouth_svar2022_3006.geojson": "file:1294446:a93a524fc198bd3e516ea36db55734c3e5de3994be05e19c807ce5546454123e", "$RASPUTIN_DATA/corine_sql/u2018_clc2018_v2020_20u1_geoPackage/DATA/U2018_CLC2018_V2020_20u1.gpkg": "file:8855322624:1587553228000000000", "$RASPUTIN_DATA/banenor_banenettverk/section_domain.geojson": "file:2337:d3af5872ac6da011cc95eaade2328cfff965116a5756f68786cd1b1907d5e571", @@ -33,94 +33,94 @@ "mesh_sha256": "746bf5c68bb9464fbb0746a9de6e0a5dbc7a15d1bfa1006cd9000f95d870ee0e", "measures": { "total": { - "median": 0.415963875, - "min": 0.409482542, - "max": 0.418569459 + "median": 0.429804542, + "min": 0.420502458, + "max": 0.460655292 }, "decode": { - "median": 0.060134583, - "min": 0.058657334, - "max": 0.061936625 + "median": 0.069657209, + "min": 0.065302792, + "max": 0.104699708 }, "start mesh: build": { - "median": 0.00017525, - "min": 0.000171709, - "max": 0.0002175 + "median": 0.000172, + "min": 0.000161958, + "max": 0.000177375 }, "start mesh: node": { - "median": 0.002629333, - "min": 0.002613791, - "max": 0.002672584 + "median": 0.002643625, + "min": 0.002631708, + "max": 0.002696167 }, "start mesh: triangulate": { - "median": 0.029249291, - "min": 0.029212459, - "max": 0.029342375 + "median": 0.02922475, + "min": 0.029188208, + "max": 0.029241083 }, "start mesh: constraint edges": { - "median": 0.006628292, - "min": 0.006577917, - "max": 0.006648291 + "median": 0.006622791, + "min": 0.00661075, + "max": 0.006625958 }, "refine": { - "median": 0.18963575, - "min": 0.1840335, - "max": 0.191952709 + "median": 0.19196575, + "min": 0.186674375, + "max": 0.193222875 }, "refine: legalise start": { - "median": 0.000456459, - "min": 0.000451666, - "max": 0.000465125 + "median": 0.000452042, + "min": 0.00045125, + "max": 0.000461458 }, "refine: start quality": { - "median": 0.000719125, - "min": 0.000708791, - "max": 0.000743458 + "median": 0.000820958, + "min": 0.000793375, + "max": 0.000866917 }, "refine: scan (parallel)": { - "median": 0.05605558699999999, - "min": 0.05550579000000001, - "max": 0.056878839 + "median": 0.05690866699999998, + "min": 0.05651604699999998, + "max": 0.057285833999999994 }, "refine: split + flip (serial)": { - "median": 0.10617537000000003, - "min": 0.10221883000000001, - "max": 0.10878087500000003 + "median": 0.107559795, + "min": 0.10220053900000002, + "max": 0.10860308200000005 }, "refine: setup + output": { - "median": 0.025143629999999972, - "min": 0.025011369000000006, - "max": 0.025580412999999996 + "median": 0.026140790000000025, + "min": 0.025929829999999987, + "max": 0.026963121000000007 }, "edge strip: generate": { - "median": 0.000753459, - "min": 0.000740833, - "max": 0.00078125 + "median": 0.000743834, + "min": 0.000724875, + "max": 0.000784083 }, "edge strip: scan (parallel)": { - "median": 0.001003834, - "min": 0.000992792, - "max": 0.00103425 + "median": 0.00099525, + "min": 0.000984375, + "max": 0.001022125 }, "edge strip: split + flip (serial)": { - "median": 0.001039083, - "min": 0.001022792, - "max": 0.001111 + "median": 0.001097208, + "min": 0.001032875, + "max": 0.001104708 }, "trim": { - "median": 0.017144458, - "min": 0.017099417, - "max": 0.017305166 + "median": 0.017020416, + "min": 0.016889, + "max": 0.018209625 }, "write: encode": { - "median": 0.009446042, - "min": 0.009401416, - "max": 0.009483459 + "median": 0.00967125, + "min": 0.009582583, + "max": 0.010595416 }, "write: disk": { - "median": 0.003253791, - "min": 0.00285225, - "max": 0.003490208 + "median": 0.003769125, + "min": 0.002447667, + "max": 0.004126709 } } }, @@ -130,94 +130,94 @@ "mesh_sha256": "746bf5c68bb9464fbb0746a9de6e0a5dbc7a15d1bfa1006cd9000f95d870ee0e", "measures": { "total": { - "median": 0.699345042, - "min": 0.698522291, - "max": 0.701520208 + "median": 0.711294125, + "min": 0.70639975, + "max": 0.729834583 }, "decode": { - "median": 0.060461875, - "min": 0.059979042, - "max": 0.063467542 + "median": 0.068484833, + "min": 0.066118209, + "max": 0.071427041 }, "start mesh: build": { - "median": 0.000171958, - "min": 0.000166083, - "max": 0.00019175 + "median": 0.000162916, + "min": 0.000159084, + "max": 0.000174125 }, "start mesh: node": { - "median": 0.002638208, - "min": 0.002625833, - "max": 0.0026535 + "median": 0.002649709, + "min": 0.002632542, + "max": 0.002658959 }, "start mesh: triangulate": { - "median": 0.029259584, - "min": 0.029204292, - "max": 0.029281666 + "median": 0.029239417, + "min": 0.029215167, + "max": 0.029263583 }, "start mesh: constraint edges": { - "median": 0.006600167, - "min": 0.0065755, - "max": 0.006606167 + "median": 0.006622708, + "min": 0.006591042, + "max": 0.006636166 }, "refine": { - "median": 0.471695084, - "min": 0.471505292, - "max": 0.472082 + "median": 0.472848125, + "min": 0.472316375, + "max": 0.494904041 }, "refine: legalise start": { - "median": 0.000455292, - "min": 0.000454583, - "max": 0.00045675 + "median": 0.000453333, + "min": 0.000451083, + "max": 0.000455542 }, "refine: start quality": { - "median": 0.000742, - "min": 0.000711083, - "max": 0.000778792 + "median": 0.000767958, + "min": 0.000747416, + "max": 0.000794792 }, "refine: scan (parallel)": { - "median": 0.3518835419999999, - "min": 0.3518694170000001, - "max": 0.35251199799999994 + "median": 0.35230404500000007, + "min": 0.3517931219999998, + "max": 0.366728253 }, "refine: split + flip (serial)": { - "median": 0.09404675200000004, - "min": 0.09354608300000002, - "max": 0.094215045 + "median": 0.09392433000000001, + "min": 0.093732415, + "max": 0.100876456 }, "refine: setup + output": { - "median": 0.024436711000000055, - "min": 0.024414089000000083, - "max": 0.024481247000000095 + "median": 0.025388667000000142, + "min": 0.025289462000000096, + "max": 0.026071540000000004 }, "edge strip: generate": { - "median": 0.000700625, - "min": 0.000687833, - "max": 0.000704458 + "median": 0.000695834, + "min": 0.000688583, + "max": 0.000932667 }, "edge strip: scan (parallel)": { - "median": 0.001016375, - "min": 0.000999375, - "max": 0.001025667 + "median": 0.001021375, + "min": 0.000976875, + "max": 0.001053833 }, "edge strip: split + flip (serial)": { - "median": 0.001055708, - "min": 0.001019875, - "max": 0.00107525 + "median": 0.001032875, + "min": 0.001010958, + "max": 0.001111292 }, "trim": { - "median": 0.017234708, - "min": 0.017102458, - "max": 0.017310542 + "median": 0.016894583, + "min": 0.016762792, + "max": 0.017187708 }, "write: encode": { - "median": 0.009445458, - "min": 0.009403834, - "max": 0.00954925 + "median": 0.009587542, + "min": 0.009515291, + "max": 0.009958375 }, "write: disk": { - "median": 0.003674875, - "min": 0.003261875, - "max": 0.00372575 + "median": 0.003953667, + "min": 0.003228834, + "max": 0.010503291 } } }, @@ -227,99 +227,99 @@ "mesh_sha256": "35a2b7bfda09e5b2f2912d33709889b11bb65af2d8e644ecfb28d24191d57fa4", "measures": { "total": { - "median": 0.355239917, - "min": 0.346618459, - "max": 0.35728825 + "median": 0.366311042, + "min": 0.355239, + "max": 0.379760458 }, "domain read": { - "median": 0.001567958, - "min": 0.001559916, - "max": 0.001584708 + "median": 0.001634875, + "min": 0.001624125, + "max": 0.005201959 }, "decode": { - "median": 0.0437335, - "min": 0.043059334, - "max": 0.045552 + "median": 0.050675417, + "min": 0.047930459, + "max": 0.063198 }, "start mesh: build": { - "median": 0.000126667, - "min": 0.00012575, - "max": 0.000133417 + "median": 0.000122458, + "min": 0.000120417, + "max": 0.000132708 }, "start mesh: node": { - "median": 0.00048, - "min": 0.00047375, - "max": 0.000529166 + "median": 0.000488416, + "min": 0.000467667, + "max": 0.00051025 }, "start mesh: triangulate": { - "median": 0.000447916, - "min": 0.000446041, - "max": 0.000451416 + "median": 0.000449041, + "min": 0.000445959, + "max": 0.000472917 }, "start mesh: constraint edges": { - "median": 0.000590333, - "min": 0.000585917, - "max": 0.000596 + "median": 0.000622583, + "min": 0.0006185, + "max": 0.000638625 }, "refine": { - "median": 0.171971959, - "min": 0.163373125, - "max": 0.173065167 + "median": 0.171212042, + "min": 0.165989417, + "max": 0.174061292 }, "refine: legalise start": { - "median": 0.000013334, - "min": 0.000013167, - "max": 0.000013584 + "median": 0.000013666, + "min": 0.000013333, + "max": 0.000014875 }, "refine: start quality": { - "median": 0.001615333, - "min": 0.001604708, - "max": 0.001626708 + "median": 0.001613042, + "min": 0.001603458, + "max": 0.001643208 }, "refine: scan (parallel)": { - "median": 0.045102876999999986, - "min": 0.04491041599999999, - "max": 0.046273589999999996 + "median": 0.045655458, + "min": 0.045073167, + "max": 0.046097005 }, "refine: split + flip (serial)": { - "median": 0.10733411799999998, - "min": 0.100114457, - "max": 0.10843924999999997 + "median": 0.10579046000000003, + "min": 0.101295208, + "max": 0.10896141800000003 }, "refine: setup + output": { - "median": 0.01693670700000005, - "min": 0.01653312400000001, - "max": 0.017424415 + "median": 0.01814462499999997, + "min": 0.01785175299999997, + "max": 0.01826507699999999 }, "edge strip: generate": { - "median": 0.000807083, - "min": 0.000757959, - "max": 0.000810708 + "median": 0.00080225, + "min": 0.000779041, + "max": 0.00084675 }, "edge strip: scan (parallel)": { - "median": 0.001058167, - "min": 0.000933, - "max": 0.001106125 + "median": 0.001099917, + "min": 0.001086751, + "max": 0.001123792 }, "edge strip: split + flip (serial)": { - "median": 0.0024928330000000003, - "min": 0.0022938340000000002, - "max": 0.002553334 + "median": 0.002649209, + "min": 0.002447416, + "max": 0.002704625 }, "trim": { - "median": 0.015983791, - "min": 0.015893708, - "max": 0.01600575 + "median": 0.015792166, + "min": 0.015711459, + "max": 0.015830334 }, "write: encode": { - "median": 0.009495291, - "min": 0.009368959, - "max": 0.00968125 + "median": 0.009773292, + "min": 0.009727833, + "max": 0.010235042 }, "write: disk": { - "median": 0.003561917, - "min": 0.003426458, - "max": 0.003709792 + "median": 0.004068417, + "min": 0.003952583, + "max": 0.004087541 } } }, @@ -329,119 +329,119 @@ "mesh_sha256": "7101ea0017bbf046b83d0a3a68bc2414207e1f82fd2f5dc785dae570451fc5f7", "measures": { "total": { - "median": 8.829228584, - "min": 8.828564375, - "max": 8.835614083 + "median": 8.893803584, + "min": 8.888226958, + "max": 8.909919708 }, "domain read": { - "median": 0.013599625, - "min": 0.013553, - "max": 0.013614917 + "median": 0.014620459, + "min": 0.014544291, + "max": 0.014684292 }, "decode": { - "median": 0.920596416, - "min": 0.918978959, - "max": 0.92552275 + "median": 0.950346417, + "min": 0.950038625, + "max": 0.95626325 }, "features read": { - "median": 0.1973755065118894, - "min": 0.19701432588044554, - "max": 0.200384576106444 + "median": 0.211907499586232, + "min": 0.2108819163404405, + "max": 0.24707040598150343 }, "features clip": { - "median": 6.000404131948017, - "min": 5.996730951475911, - "max": 6.009083757176995 + "median": 6.021925594075583, + "min": 6.0148165844148025, + "max": 6.037521208636463 }, "features clip: clean-up": { - "median": 5.936553500010632, - "min": 5.932732084067538, - "max": 5.9448600829346105 + "median": 5.955918250023387, + "min": 5.948564375052229, + "max": 5.970792250009254 }, "start mesh: build": { - "median": 0.001760542, - "min": 0.001760292, - "max": 0.001769292 + "median": 0.001898083, + "min": 0.001892375, + "max": 0.001917416 }, "start mesh: node": { - "median": 0.147264375, - "min": 0.14577075, - "max": 0.14733075 + "median": 0.142863417, + "min": 0.142621333, + "max": 0.143016959 }, "start mesh: triangulate": { - "median": 0.039687042, - "min": 0.039634416, - "max": 0.039709917 + "median": 0.039568042, + "min": 0.039549875, + "max": 0.039740167 }, "start mesh: constraint edges": { - "median": 0.093702042, - "min": 0.09296875, - "max": 0.094190375 + "median": 0.098003209, + "min": 0.09796325, + "max": 0.098161417 }, "refine": { - "median": 0.659033375, - "min": 0.655672125, - "max": 0.662185 + "median": 0.661399084, + "min": 0.661204666, + "max": 0.663069583 }, "refine: legalise start": { - "median": 0.002126833, - "min": 0.002125083, - "max": 0.002181334 + "median": 0.002124416, + "min": 0.002122541, + "max": 0.002128584 }, "refine: start quality": { - "median": 0.035552959, - "min": 0.034938, - "max": 0.035729083 + "median": 0.035377667, + "min": 0.035118666, + "max": 0.035387667 }, "refine: scan (parallel)": { - "median": 0.39490754, - "min": 0.3946743339999999, - "max": 0.395629583 + "median": 0.3997212930000001, + "min": 0.395849668, + "max": 0.400112291 }, "refine: split + flip (serial)": { - "median": 0.17402166800000002, - "min": 0.170890834, - "max": 0.176348416 + "median": 0.17266170499999997, + "min": 0.170345205, + "max": 0.17456483299999995 }, "refine: setup + output": { - "median": 0.052426956000000136, - "min": 0.05208687500000009, - "max": 0.05325100199999999 + "median": 0.05324696200000001, + "min": 0.05317450199999996, + "max": 0.053737333000000054 }, "edge strip: generate": { - "median": 0.098305666, - "min": 0.098302167, - "max": 0.098961 + "median": 0.09940575, + "min": 0.09936375, + "max": 0.103394042 }, "edge strip: scan (parallel)": { - "median": 0.008010208999999999, - "min": 0.007995292, - "max": 0.008590707999999999 + "median": 0.008193127, + "min": 0.007850540999999999, + "max": 0.008470123999999999 }, "edge strip: split + flip (serial)": { - "median": 0.007330208999999999, - "min": 0.007145334, - "max": 0.007409542000000001 + "median": 0.007335001, + "min": 0.00723725, + "max": 0.00773 }, "trim": { - "median": 0.025855083, - "min": 0.025761208, - "max": 0.025908042 + "median": 0.025915709, + "min": 0.02571925, + "max": 0.026244375 }, "land cover": { - "median": 0.295597333, - "min": 0.295216375, - "max": 0.295728834 + "median": 0.296326042, + "min": 0.294683417, + "max": 0.29975275 }, "write: encode": { - "median": 0.009886292, - "min": 0.009834709, - "max": 0.009888417 + "median": 0.0098895, + "min": 0.009801, + "max": 0.010555125 }, "write: disk": { - "median": 0.006146209, - "min": 0.006043, - "max": 0.012273958 + "median": 0.006055875, + "min": 0.005777166, + "max": 0.006730375 } } }, @@ -451,129 +451,129 @@ "mesh_sha256": "c0f3b555ddaffac4d38332b7f11a149e11e2039a66db6ff98695bf297a043d28", "measures": { "total": { - "median": 14.542084583, - "min": 14.535847917, - "max": 14.551780625 + "median": 14.736105, + "min": 14.67228375, + "max": 14.737309375 }, "domain read": { - "median": 0.042737541, - "min": 0.042447125, - "max": 0.043427792 + "median": 0.04538525, + "min": 0.045281958, + "max": 0.045452709 }, "decode": { - "median": 4.578057291, - "min": 4.565632417, - "max": 4.584270167 + "median": 4.614569208, + "min": 4.595618042, + "max": 4.649497209 }, "features read": { - "median": 0.921586470445618, - "min": 0.9120247770333663, - "max": 0.963109087315388 + "median": 1.0329260997241363, + "min": 1.0304532466689125, + "max": 1.0706864875974134 }, "features clip": { - "median": 6.342146404553205, - "min": 6.338787996675819, - "max": 6.34631439007353 + "median": 6.352541525382549, + "min": 6.3516043873969465, + "max": 6.352544419351034 }, "features clip: clean-up": { - "median": 5.392329290974885, - "min": 5.391268541919999, - "max": 5.398513959022239 + "median": 5.396905416972004, + "min": 5.393577124923468, + "max": 5.399352208944038 }, "start mesh: build": { - "median": 0.003107875, - "min": 0.003080167, - "max": 0.003132375 + "median": 0.003276375, + "min": 0.003239333, + "max": 0.003278291 }, "start mesh: node": { - "median": 0.306133667, - "min": 0.305732583, - "max": 0.306136959 + "median": 0.295757, + "min": 0.295414417, + "max": 0.298556542 }, "start mesh: triangulate": { - "median": 0.087295375, - "min": 0.087039208, - "max": 0.087431208 + "median": 0.087646417, + "min": 0.087466, + "max": 0.087658917 }, "start mesh: constraint edges": { - "median": 0.190978042, - "min": 0.190633125, - "max": 0.191376125 + "median": 0.199927042, + "min": 0.19983875, + "max": 0.202502958 }, "refine": { - "median": 0.237921625, - "min": 0.237089709, - "max": 0.240623083 + "median": 0.240219584, + "min": 0.237092458, + "max": 0.242974125 }, "refine: legalise start": { - "median": 0.004321209, - "min": 0.00430625, - "max": 0.004351125 + "median": 0.004304709, + "min": 0.004295875, + "max": 0.004432875 }, "refine: start quality": { - "median": 0.063313916, - "min": 0.062647959, - "max": 0.063466458 + "median": 0.062964542, + "min": 0.062865208, + "max": 0.062972542 }, "refine: scan (parallel)": { - "median": 0.05935803999999999, - "min": 0.059079792, - "max": 0.059541455 + "median": 0.05965337299999999, + "min": 0.059205538999999995, + "max": 0.061640876000000004 }, "refine: split + flip (serial)": { - "median": 0.054421622, - "min": 0.05414283399999999, - "max": 0.057798166000000005 + "median": 0.05617150000000001, + "min": 0.05417624999999999, + "max": 0.056377708 }, "refine: setup + output": { - "median": 0.05646462800000002, - "min": 0.055953169999999997, - "max": 0.05646779299999999 + "median": 0.05679108600000002, + "min": 0.05654075200000003, + "max": 0.05789333199999999 }, "edge strip: generate": { - "median": 0.040602, - "min": 0.040267959, - "max": 0.040666834 + "median": 0.040937459, + "min": 0.04092275, + "max": 0.041232958 }, "check points: project": { - "median": 0.6664140454959124, - "min": 0.6445603384636343, - "max": 0.6678974126698449 + "median": 0.6725858339341357, + "min": 0.6340025420067832, + "max": 0.6796541711082682 }, "check points: store": { - "median": 0.2739846293001653, - "min": 0.272586036511269, - "max": 0.27819728855660675 + "median": 0.2757216628783196, + "min": 0.27522270804286003, + "max": 0.2766910820998177 }, "final check: scan (parallel)": { - "median": 0.264481997, - "min": 0.262131541, - "max": 0.2656331669999999 + "median": 0.266046169, + "min": 0.265628751, + "max": 0.267461582 }, "final check: split + flip (serial)": { - "median": 0.038177456, - "min": 0.037784956999999994, - "max": 0.03839912400000001 + "median": 0.038262623999999995, + "min": 0.03826162400000001, + "max": 0.04050221 }, "trim": { - "median": 0.018914791, - "min": 0.018853458, - "max": 0.018928833 + "median": 0.018851791, + "min": 0.018712666, + "max": 0.018906917 }, "land cover": { - "median": 0.211289208, - "min": 0.21093725, - "max": 0.211618625 + "median": 0.21108525, + "min": 0.209567708, + "max": 0.211225125 }, "write: encode": { - "median": 0.008228792, - "min": 0.008190625, - "max": 0.008303584 + "median": 0.008223416, + "min": 0.008209667, + "max": 0.008281167 }, "write: disk": { - "median": 0.004085541, - "min": 0.003913208, - "max": 0.0040945 + "median": 0.004533958, + "min": 0.004505667, + "max": 0.004556833 } } }, @@ -583,99 +583,99 @@ "mesh_sha256": "9f01b9ac27e2d2d5d1970e69a174995ebf99e6582adc17e05b257c8bd3f4348e", "measures": { "total": { - "median": 0.328736709, - "min": 0.327646541, - "max": 0.331091417 + "median": 0.344221792, + "min": 0.343089625, + "max": 0.344841916 }, "domain read": { - "median": 0.001223958, - "min": 0.001193125, - "max": 0.001237209 + "median": 0.001231625, + "min": 0.001225041, + "max": 0.001235666 }, "decode": { - "median": 0.13842975, - "min": 0.138245292, - "max": 0.138948709 + "median": 0.148454458, + "min": 0.148100875, + "max": 0.148698458 }, "start mesh: build": { - "median": 0.0001265, - "min": 0.000120417, - "max": 0.000132583 + "median": 0.000113167, + "min": 0.00011175, + "max": 0.000115583 }, "start mesh: node": { - "median": 0.000077, - "min": 0.000072459, - "max": 0.000078542 + "median": 0.000076458, + "min": 0.000068708, + "max": 0.000080042 }, "start mesh: triangulate": { - "median": 0.000032459, - "min": 0.000030375, - "max": 0.00003275 + "median": 0.000029875, + "min": 0.000029458, + "max": 0.000032791 }, "start mesh: constraint edges": { - "median": 0.000096292, - "min": 0.000084584, - "max": 0.000099375 + "median": 0.000091542, + "min": 0.000083583, + "max": 0.00009225 }, "refine": { - "median": 0.099222708, - "min": 0.099139917, - "max": 0.099541917 + "median": 0.10066825, + "min": 0.100063209, + "max": 0.10154775 }, "refine: legalise start": { - "median": 3.084e-6, + "median": 3e-6, "min": 3e-6, - "max": 3.125e-6 + "max": 3.292e-6 }, "refine: start quality": { - "median": 0.000154041, - "min": 0.000151959, - "max": 0.000155 + "median": 0.000157334, + "min": 0.000155083, + "max": 0.000159875 }, "refine: scan (parallel)": { - "median": 0.08256295899999999, - "min": 0.082561748, - "max": 0.08276754300000001 + "median": 0.08338466600000002, + "min": 0.08304483400000003, + "max": 0.083541045 }, "refine: split + flip (serial)": { - "median": 0.013793952, - "min": 0.013646123000000001, - "max": 0.013868874000000002 + "median": 0.014486085000000001, + "min": 0.013778876000000002, + "max": 0.014864668 }, "refine: setup + output": { - "median": 0.0027748799999999935, - "min": 0.0026358320000000185, - "max": 0.0028224219999999772 + "median": 0.0029769969999999674, + "min": 0.0027412919999999785, + "max": 0.0029791620000000074 }, "edge strip: generate": { - "median": 0.000566792, - "min": 0.000533875, - "max": 0.000601084 + "median": 0.000547917, + "min": 0.0005445, + "max": 0.000622208 }, "edge strip: scan (parallel)": { - "median": 0.0006741659999999999, - "min": 0.000641333, - "max": 0.00072825 + "median": 0.0006815, + "min": 0.000670793, + "max": 0.0007561670000000001 }, "edge strip: split + flip (serial)": { - "median": 0.000327834, - "min": 0.000243999, - "max": 0.000373084 + "median": 0.0003225, + "min": 0.000250333, + "max": 0.000384209 }, "trim": { - "median": 0.002361208, - "min": 0.002238458, - "max": 0.002452459 + "median": 0.002296666, + "min": 0.002231625, + "max": 0.002365666 }, "write: encode": { - "median": 0.004143583, - "min": 0.004069917, - "max": 0.004341125 + "median": 0.004375, + "min": 0.004342625, + "max": 0.004403709 }, "write: disk": { - "median": 0.000667291, - "min": 0.000614709, - "max": 0.00070875 + "median": 0.000653375, + "min": 0.000643416, + "max": 0.000656875 } } }, @@ -685,99 +685,99 @@ "mesh_sha256": "992e49cbcbe4a781ff03783a820946b163869b2b4a1f02bb70927d94224c4197", "measures": { "total": { - "median": 3.578062333, - "min": 3.560890084, - "max": 3.61971725 + "median": 3.624219916, + "min": 3.573554375, + "max": 3.668853792 }, "decode": { - "median": 0.067789542, - "min": 0.066407958, - "max": 0.070348 + "median": 0.070560333, + "min": 0.070536042, + "max": 0.071511292 }, "start mesh: build": { - "median": 0.000172417, - "min": 0.000166208, - "max": 0.000173292 + "median": 0.000169291, + "min": 0.000166833, + "max": 0.00017375 }, "start mesh: node": { - "median": 0.002643709, - "min": 0.002630709, - "max": 0.002646917 + "median": 0.002650667, + "min": 0.002643917, + "max": 0.0027065 }, "start mesh: triangulate": { - "median": 0.029220125, - "min": 0.029195625, - "max": 0.029241125 + "median": 0.0292315, + "min": 0.02921975, + "max": 0.02931375 }, "start mesh: constraint edges": { - "median": 0.006545333, - "min": 0.00654325, - "max": 0.006562417 + "median": 0.006592333, + "min": 0.006585417, + "max": 0.006607834 }, "slope": { - "median": 0.105743292, - "min": 0.105629208, - "max": 0.106262166 + "median": 0.105851708, + "min": 0.105340875, + "max": 0.105922042 }, "refine": { - "median": 2.008883625, - "min": 2.002274709, - "max": 2.010968792 + "median": 2.010205334, + "min": 2.002457791, + "max": 2.037710666 }, "refine: legalise start": { - "median": 0.000462125, - "min": 0.000460083, - "max": 0.000474375 + "median": 0.000464542, + "min": 0.00045975, + "max": 0.000468042 }, "refine: start quality": { - "median": 0.000755292, - "min": 0.0007465, - "max": 0.0007765 + "median": 0.00074875, + "min": 0.000734875, + "max": 0.000764542 }, "refine: scan (parallel)": { - "median": 0.5638042910000002, - "min": 0.5638000879999999, - "max": 0.5670207089999998 + "median": 0.567158586, + "min": 0.5653191710000003, + "max": 0.5687510840000001 }, "refine: split + flip (serial)": { - "median": 1.1840706219999997, - "min": 1.17977575, - "max": 1.1896711659999994 + "median": 1.1825762899999999, + "min": 1.1705820829999998, + "max": 1.205978833 }, "refine: setup + output": { - "median": 0.25655571100000074, - "min": 0.2562801210000005, - "max": 0.25747379299999995 + "median": 0.26189204, + "min": 0.261101373, + "max": 0.26337383000000014 }, "edge strip: generate": { - "median": 0.001067875, - "min": 0.001059792, - "max": 0.001085375 + "median": 0.001087708, + "min": 0.001071208, + "max": 0.001096584 }, "edge strip: scan (parallel)": { - "median": 0.009431124, - "min": 0.009402165999999998, - "max": 0.009484958 + "median": 0.009625835, + "min": 0.009499584, + "max": 0.009804374999999999 }, "edge strip: split + flip (serial)": { - "median": 0.013071624, - "min": 0.012965457999999997, - "max": 0.013226416000000001 + "median": 0.01310396, + "min": 0.012913375999999999, + "max": 0.016226374000000002 }, "trim": { - "median": 0.117721459, - "min": 0.117681, - "max": 0.117933542 + "median": 0.117503708, + "min": 0.117116959, + "max": 0.118099083 }, "write: encode": { - "median": 0.044901708, - "min": 0.044475291, - "max": 0.045232375 + "median": 0.044908, + "min": 0.044622709, + "max": 0.04755025 }, "write: disk": { - "median": 0.026688542, - "min": 0.02042975, - "max": 0.069523875 + "median": 0.061405125, + "min": 0.021662583, + "max": 0.070209708 } } }