- Document non-blocking receive contract in perf_bench.rs docstring, confirming no TCP deadlock race (Hoshe #1, critical) - Make shadowcast parser order-independent — flush on new config header instead of requiring Recursive after Symmetric (Hoshe #2) - Fix p95 calculation: use floor(0.95*(N-1)) nearest-rank instead of ceil(0.95*N)-1 which was off-by-one at N=50 (Hoshe #4) - Error on --compare when no baseline file exists (Hoshe #5) - Add D-031 10tps assumption comment to TICK_BUDGET_US (Tyre #1) - Strengthen snapshot assertion: require warmup + half measurement window instead of warmup + 1 (Tyre #2) - Regenerate baseline with corrected p95 (356µs, was 526µs) Hoshe #3 (.PHONY) was already addressed — perf-baseline is in the .PHONY declaration on Makefile line 10. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
117 lines
2.9 KiB
JSON
117 lines
2.9 KiB
JSON
{
|
|
"timestamp": "2026-02-18T12:07:18.546680+00:00",
|
|
"git": {
|
|
"commit": "c1d7c07",
|
|
"branch": "ci"
|
|
},
|
|
"tick_timing": {
|
|
"max_us": 363,
|
|
"mean_us": 332,
|
|
"measured_ticks": 50,
|
|
"min_us": 310,
|
|
"p95_us": 356,
|
|
"warmup_ticks": 5
|
|
},
|
|
"entities": {
|
|
"avg_per_snapshot": 21,
|
|
"max_per_snapshot": 21
|
|
},
|
|
"memory": {
|
|
"rss_kb": 6900
|
|
},
|
|
"shadowcast": {
|
|
"configs": [
|
|
{
|
|
"map_size": 32,
|
|
"density": "open field",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 57.86,
|
|
"symmetric_per_call_us": 57.86,
|
|
"recursive_total_ms": 97.97,
|
|
"recursive_per_call_us": 97.97
|
|
},
|
|
{
|
|
"map_size": 32,
|
|
"density": "moderate corridors",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 52.29,
|
|
"symmetric_per_call_us": 52.29,
|
|
"recursive_total_ms": 189.99,
|
|
"recursive_per_call_us": 189.99
|
|
},
|
|
{
|
|
"map_size": 32,
|
|
"density": "dense rooms",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 21.31,
|
|
"symmetric_per_call_us": 21.31,
|
|
"recursive_total_ms": 98.47,
|
|
"recursive_per_call_us": 98.47
|
|
},
|
|
{
|
|
"map_size": 64,
|
|
"density": "open field",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 60.5,
|
|
"symmetric_per_call_us": 60.5,
|
|
"recursive_total_ms": 98.33,
|
|
"recursive_per_call_us": 98.33
|
|
},
|
|
{
|
|
"map_size": 64,
|
|
"density": "moderate corridors",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 47.41,
|
|
"symmetric_per_call_us": 47.41,
|
|
"recursive_total_ms": 184.87,
|
|
"recursive_per_call_us": 184.87
|
|
},
|
|
{
|
|
"map_size": 64,
|
|
"density": "dense rooms",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 14.35,
|
|
"symmetric_per_call_us": 14.35,
|
|
"recursive_total_ms": 79.6,
|
|
"recursive_per_call_us": 79.6
|
|
},
|
|
{
|
|
"map_size": 150,
|
|
"density": "open field",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 56.65,
|
|
"symmetric_per_call_us": 56.65,
|
|
"recursive_total_ms": 97.8,
|
|
"recursive_per_call_us": 97.8
|
|
},
|
|
{
|
|
"map_size": 150,
|
|
"density": "moderate corridors",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 40.49,
|
|
"symmetric_per_call_us": 40.49,
|
|
"recursive_total_ms": 158.81,
|
|
"recursive_per_call_us": 158.81
|
|
},
|
|
{
|
|
"map_size": 150,
|
|
"density": "dense rooms",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 12.88,
|
|
"symmetric_per_call_us": 12.88,
|
|
"recursive_total_ms": 77.98,
|
|
"recursive_per_call_us": 77.98
|
|
}
|
|
]
|
|
}
|
|
}
|