From 10710b322fe3386b4de672b47d24aa308638c793 Mon Sep 17 00:00:00 2001 From: Rich Date: Thu, 2 Feb 2023 22:52:59 -0800 Subject: [PATCH] astar: Switch from std hashmap to hashbrown MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This offers a 30% improvement on the benchmark with zero other changes: a_star_test_map time: [24.398 µs 24.607 µs 24.873 µs] change: [-31.335% -30.672% -29.858%] (p = 0.00 < 0.05) Real-world results were similar. --- bracket-pathfinding/Cargo.toml | 1 + bracket-pathfinding/src/astar.rs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bracket-pathfinding/Cargo.toml b/bracket-pathfinding/Cargo.toml index 50f631c1..41f763ba 100755 --- a/bracket-pathfinding/Cargo.toml +++ b/bracket-pathfinding/Cargo.toml @@ -23,6 +23,7 @@ bracket-algorithm-traits = { path = "../bracket-algorithm-traits", version = "~0 num-rational = { version = "0.4", default-features = false, features = ["std"] } rayon = { version = "1.5.0", optional = true } smallvec = "~1" +hashbrown = "0.13.2" [dev-dependencies] crossterm = "~0.25" diff --git a/bracket-pathfinding/src/astar.rs b/bracket-pathfinding/src/astar.rs index c46c15a9..c9e15f2c 100755 --- a/bracket-pathfinding/src/astar.rs +++ b/bracket-pathfinding/src/astar.rs @@ -1,6 +1,7 @@ use bracket_algorithm_traits::prelude::BaseMap; +use hashbrown::HashMap; use std::cmp::Ordering; -use std::collections::{BinaryHeap, HashMap}; +use std::collections::BinaryHeap; use std::convert::TryInto; /// Bail out if the A* search exceeds this many steps.