Replace rustc_hash with ahash in selected hot paths #742
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Investigated replacing
rustc_hash::FxHash*withahashacross all hash map/set usage in the library. Benchmarked each location individually using IAI-callgrind to measure instruction counts and cycles.Changes
Kept improvements only:
noderefs.rs:FxHashSet→AHashSet(-7-8% instructions in bidirectional BFS)undirected/connected_components.rs:FxHashMap/FxHashSet→AHashMap/AHashSet(-0.05% instructions)Rejected regressions:
directed/dfs.rs: +11.6% instructionsdirected/bfs.rs: +6-9% instructionsdirected/dijkstra.rs: No changedirected/edmonds_karp.rs: +3-5% instructionskuhn_munkres.rs: +0.4-1.1% instructionsBenchmark Results
Conclusion:
rustc_hashremains superior for most pathfinding use cases.ahashbenefits small hash sets in bidirectional search and the union-find structure in connected components.Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.