Implement tiered pathfinding with thread-local scratchpads

- TIER0 (<10 tiles): Vec-based linear search, zero hash overhead
- TIER1 (10-30 tiles): FxHashMap scratchpad with memory reuse
- TIER2 (30-100 tiles): AHashMap scratchpad for better collision resistance
- TIER3 (>100 tiles): Chunk waypoint decomposition
- Added benchmarking infrastructure with F8 report trigger
- Added async infrastructure: PendingPath, CompletedPaths resources
- Lowered MAX_NODES to 5000 to prevent runaway searches

Benchmarks show P50 improved 13%, max improved 53%
This commit is contained in:
2026-03-18 14:37:15 +00:00
parent 49972b9b64
commit 81b70a661c
5 changed files with 1317 additions and 35 deletions
Generated
+8
View File
@@ -2331,10 +2331,12 @@ dependencies = [
name = "dorf"
version = "0.1.0"
dependencies = [
"ahash",
"bevy",
"bevy_platform",
"bevy_rand",
"image",
"nohash-hasher",
"noise",
"rand 0.10.0",
"rayon",
@@ -3567,6 +3569,12 @@ dependencies = [
"libc",
]
[[package]]
name = "nohash-hasher"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
[[package]]
name = "noise"
version = "0.9.0"