Adds `make perf-baseline` — boots the full server plugin stack with real content, measures 50 ticks (5 warmup), captures per-tick timing, entity counts, and process RSS. Includes shadowcast benchmarks. Saves structured JSON to tests/perf/baseline.json for regression detection. Supports --compare mode (>20% threshold). First baseline: mean 366µs, p95 526µs (0.5% of D-026 100ms budget). 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-18T11:39:46.913254+00:00",
|
|
"git": {
|
|
"commit": "b4a3784",
|
|
"branch": "ci"
|
|
},
|
|
"tick_timing": {
|
|
"max_us": 537,
|
|
"mean_us": 366,
|
|
"measured_ticks": 50,
|
|
"min_us": 314,
|
|
"p95_us": 526,
|
|
"warmup_ticks": 5
|
|
},
|
|
"entities": {
|
|
"avg_per_snapshot": 21,
|
|
"max_per_snapshot": 21
|
|
},
|
|
"memory": {
|
|
"rss_kb": 6972
|
|
},
|
|
"shadowcast": {
|
|
"configs": [
|
|
{
|
|
"map_size": 32,
|
|
"density": "open field",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 62.2,
|
|
"symmetric_per_call_us": 62.2,
|
|
"recursive_total_ms": 107.25,
|
|
"recursive_per_call_us": 107.25
|
|
},
|
|
{
|
|
"map_size": 32,
|
|
"density": "moderate corridors",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 60.15,
|
|
"symmetric_per_call_us": 60.15,
|
|
"recursive_total_ms": 211.61,
|
|
"recursive_per_call_us": 211.61
|
|
},
|
|
{
|
|
"map_size": 32,
|
|
"density": "dense rooms",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 24.28,
|
|
"symmetric_per_call_us": 24.28,
|
|
"recursive_total_ms": 107.95,
|
|
"recursive_per_call_us": 107.95
|
|
},
|
|
{
|
|
"map_size": 64,
|
|
"density": "open field",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 75.38,
|
|
"symmetric_per_call_us": 75.38,
|
|
"recursive_total_ms": 108.22,
|
|
"recursive_per_call_us": 108.22
|
|
},
|
|
{
|
|
"map_size": 64,
|
|
"density": "moderate corridors",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 48.72,
|
|
"symmetric_per_call_us": 48.72,
|
|
"recursive_total_ms": 202.49,
|
|
"recursive_per_call_us": 202.49
|
|
},
|
|
{
|
|
"map_size": 64,
|
|
"density": "dense rooms",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 14.5,
|
|
"symmetric_per_call_us": 14.5,
|
|
"recursive_total_ms": 90.33,
|
|
"recursive_per_call_us": 90.33
|
|
},
|
|
{
|
|
"map_size": 150,
|
|
"density": "open field",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 59.7,
|
|
"symmetric_per_call_us": 59.7,
|
|
"recursive_total_ms": 103.09,
|
|
"recursive_per_call_us": 103.09
|
|
},
|
|
{
|
|
"map_size": 150,
|
|
"density": "moderate corridors",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 43.64,
|
|
"symmetric_per_call_us": 43.64,
|
|
"recursive_total_ms": 178.09,
|
|
"recursive_per_call_us": 178.09
|
|
},
|
|
{
|
|
"map_size": 150,
|
|
"density": "dense rooms",
|
|
"range": 20,
|
|
"iterations": 1000,
|
|
"symmetric_total_ms": 12.63,
|
|
"symmetric_per_call_us": 12.63,
|
|
"recursive_total_ms": 79.87,
|
|
"recursive_per_call_us": 79.87
|
|
}
|
|
]
|
|
}
|
|
}
|