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:
@@ -3,3 +3,13 @@ pub const TILE_PIXELS: u32 = 16;
|
||||
pub const TILE_SIZE: f32 = TILE_PIXELS as f32 * PIXEL_RATIO;
|
||||
pub const ITILE_SIZE: i32 = TILE_SIZE as i32;
|
||||
pub const SEED: u32 = 420;
|
||||
|
||||
// Pathfinding tier thresholds (in tiles)
|
||||
pub const PATHFINDER_TIER0_MAX_TILES: i32 = 10; // Very short paths: Vec-based
|
||||
pub const PATHFINDER_TIER1_MAX_TILES: i32 = 30; // Short paths: AHashMap scratchpad
|
||||
pub const PATHFINDER_TIER2_MAX_TILES: i32 = 100; // Medium paths: AHashMap scratchpad
|
||||
// TIER3: > 100 tiles → Chunk waypoints + async
|
||||
|
||||
// Pathfinding configuration
|
||||
pub const PATHFINDER_MAX_NODES: usize = 5000; // Max nodes before partial path
|
||||
pub const PATHFINDER_ASYNC_THRESHOLD_TILES: i32 = 150; // Start async for very long paths
|
||||
|
||||
Reference in New Issue
Block a user