Captured 2026-07-30T21:09:34Z on Intel(R) Xeon(R) Processor @ 2.10GHz, 2 logical CPUs, 7.8 GiB RAM, Python 3.11.15, DuckDB 1.5.5.
Method: Warm DuckDB file on the local filesystem, single process, no concurrency. Each scan figure is 12 repeated full scans of the warehouse; each attribution figure is 60 single day attribution calls, one per distinct date.
| Scale | Fact rows | Slices | Baseline build (ms) | Scan p50 (ms) | Scan p95 (ms) | Scan p99 (ms) |
|---|---|---|---|---|---|---|
| small | 59,076 | 14 | 1479 | 133.1 | 153.3 | 158.6 |
| medium | 656,640 | 20 | 1892 | 273.1 | 370.6 | 415.7 |
| large | 1,313,280 | 23 | 1988 | 315.2 | 400.2 | 417.4 |
| Configuration | Slices | Baseline rows | Baseline build (ms) | Attribution p50 (ms) | Attribution p95 (ms) | Attribution p99 (ms) |
|---|---|---|---|---|---|---|
| depth1-22-slices | 23 | 104,880 | 2323 | 19.96 | 38.05 | 64.18 |
| depth2-212-slices | 214 | 975,840 | 19306 | 33.25 | 53.32 | 63.59 |
Raw numbers: results.json in this directory. Regenerate with make bench.