diff options
| author | HampusM <hampus@hampusmat.com> | 2024-12-20 21:27:48 +0100 | 
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2024-12-20 21:27:56 +0100 | 
| commit | be7d20f0c57cc834e943426090fe2debf76ca98d (patch) | |
| tree | 8b81d1dd06bc7d486120f993e3e3e70e48cb34c6 /ecs/src | |
| parent | cd30a25d2a75cadfe990ae6c1ae2eca5d927a8a7 (diff) | |
perf(ecs): use hashbrown's HashMap & HashSet
Hashbrown's HashMap & HashSet is faster than std's. I
guess this is because std (which uses hashbrown) does
not enable hashbrown's default-hasher flag and instead
uses a slower hasher.
Diffstat (limited to 'ecs/src')
| -rw-r--r-- | ecs/src/component/storage.rs | 3 | ||||
| -rw-r--r-- | ecs/src/lib.rs | 3 | ||||
| -rw-r--r-- | ecs/src/query/options.rs | 3 | ||||
| -rw-r--r-- | ecs/src/system/stateful.rs | 2 | 
4 files changed, 7 insertions, 4 deletions
diff --git a/ecs/src/component/storage.rs b/ecs/src/component/storage.rs index 54fa834..dcf0181 100644 --- a/ecs/src/component/storage.rs +++ b/ecs/src/component/storage.rs @@ -1,10 +1,11 @@  use std::any::type_name;  use std::borrow::Borrow;  use std::cell::RefCell; -use std::collections::{HashMap, HashSet};  use std::slice::Iter as SliceIter;  use std::vec::IntoIter as OwnedVecIter; +use hashbrown::{HashMap, HashSet}; +  use crate::archetype::Id as ArchetypeId;  use crate::component::{      Component, diff --git a/ecs/src/lib.rs b/ecs/src/lib.rs index 3926344..43a00f1 100644 --- a/ecs/src/lib.rs +++ b/ecs/src/lib.rs @@ -2,12 +2,13 @@  use std::any::{type_name, TypeId};  use std::cell::RefCell; -use std::collections::HashMap;  use std::fmt::Debug;  use std::mem::ManuallyDrop;  use std::sync::atomic::{AtomicBool, Ordering};  use std::sync::Arc; +use hashbrown::HashMap; +  use crate::actions::Action;  use crate::component::storage::Storage as ComponentStorage;  use crate::component::{ diff --git a/ecs/src/query/options.rs b/ecs/src/query/options.rs index ead0ac7..772d091 100644 --- a/ecs/src/query/options.rs +++ b/ecs/src/query/options.rs @@ -1,6 +1,7 @@ -use std::collections::HashSet;  use std::marker::PhantomData; +use hashbrown::HashSet; +  use crate::component::Component;  use crate::EntityComponent; diff --git a/ecs/src/system/stateful.rs b/ecs/src/system/stateful.rs index 5eae1da..80ac346 100644 --- a/ecs/src/system/stateful.rs +++ b/ecs/src/system/stateful.rs @@ -1,7 +1,7 @@  use std::any::{Any, TypeId}; -use std::collections::HashMap;  use std::panic::{RefUnwindSafe, UnwindSafe}; +use hashbrown::HashMap;  use seq_macro::seq;  use crate::component::Component;  | 
