本文记录 Milestone 33 #285~#287 的同口径 before/after 基准。可复现入口为
tests/SonnetDB.Benchmarks/Benchmarks/M33PushdownBenchmark.cs。
10.0.26200.873710.0.301,.NET Runtime 10.0.9,x64 RyuJIT0.15.8,3 次 warmup,7 次 iteration,取 Median / P90LIMIT 64;#286 为自然正序,#287 为 ORDER BY time DESC运行命令:
dotnet run -c Release --project tests\SonnetDB.Benchmarks\SonnetDB.Benchmarks.csproj -- --filter "*M33Pushdown*"
| 场景 | 实现 | Median | P90 | 单次分配 | |
|---|---|---|---|---|---|
| #285 count() | before:三字段逐点 + HashSet 时间戳并集 | 37.104 ms | 45.749 ms | 12,273.20 KiB | |
| #285 count() | after:有序流 k-way merge | 40.439 ms | 41.112 ms | 43.84 KiB | |
| #286 LIMIT | before:全量物化后 Take(64) | 358.437 ms | 367.866 ms | 191,676.27 KiB | |
| #286 LIMIT | after:时间轴合并凑够 64 行即停 | 54.410 us | 56.890 us | 56.26 KiB | |
| #287 latest-N | before:全量物化、DESC 排序后 Take(64) | 276.897 ms | 296.988 ms | 197,926.54 KiB | |
| #287 latest-N | after:从 MaxTimestamp 反向扫描 | 57.050 us | 68.320 us | 57.00 KiB |
LIMIT 64 的固定口径;多 series、高重叠段、冷 cache
和大 OFFSET 应分别复测,不从本表外推绝对延迟。