Description
The game loop and render loop currently trigger repeated memory allocations on every frame (hot paths):
simulation.get_backpack(...) allocates a fresh vector vec![InventoryItem::default(); 50] every time it is called.
group_backpack(...) runs with O(N²) complexity due to nested linear searches, and is called multiple times during render layout updates.
- The active player HashMap is reconstructed from scratch in
main.rs on every tick.
Proposed Changes
- Optimize
group_backpack to use a HashMap-based O(N) grouping algorithm.
- Reuse a pre-allocated buffer for
get_backpack calls instead of allocating a fresh vector on every frame.
- Cache active player visual stats in
main.rs to avoid rebuilding the HashMap from scratch on every tick.
Description
The game loop and render loop currently trigger repeated memory allocations on every frame (hot paths):
simulation.get_backpack(...)allocates a fresh vectorvec![InventoryItem::default(); 50]every time it is called.group_backpack(...)runs with O(N²) complexity due to nested linear searches, and is called multiple times during render layout updates.main.rson every tick.Proposed Changes
group_backpackto use a HashMap-based O(N) grouping algorithm.get_backpackcalls instead of allocating a fresh vector on every frame.main.rsto avoid rebuilding the HashMap from scratch on every tick.