Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch usage of std HashMap/HashSet default hasher, to aHash algo #258

Merged
merged 16 commits into from
Aug 29, 2020
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion crates/bevy_asset/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,5 @@ crossbeam-channel = "0.4.2"
anyhow = "1.0"
thiserror = "1.0"
log = { version = "0.4", features = ["release_max_level_info"] }
notify = { version = "5.0.0-pre.2", optional = true }
notify = { version = "5.0.0-pre.2", optional = true }
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] }
2 changes: 1 addition & 1 deletion crates/bevy_asset/src/asset_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use crate::{
use anyhow::Result;
use bevy_ecs::{Res, Resource, Resources};
use crossbeam_channel::TryRecvError;
use hashbrown::{HashMap, HashSet};
use std::{
collections::{HashMap, HashSet},
env, fs, io,
path::{Path, PathBuf},
sync::{Arc, RwLock},
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_asset/src/assets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use crate::{
use bevy_app::{prelude::Events, AppBuilder};
use bevy_ecs::{FromResources, IntoQuerySystem, ResMut, Resource};
use bevy_type_registry::RegisterType;
use std::collections::HashMap;
use hashbrown::HashMap;

/// Events that happen on assets of type `T`
pub enum AssetEvent<T: Resource> {
Expand Down
6 changes: 5 additions & 1 deletion crates/bevy_core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@ license = "MIT"
keywords = ["bevy"]

[dependencies]
# bevy
bevy_app = { path = "../bevy_app", version = "0.1" }
bevy_derive = { path = "../bevy_derive", version = "0.1" }
bevy_ecs = { path = "../bevy_ecs", version = "0.1" }
bevy_property = { path = "../bevy_property", version = "0.1" }
bevy_type_registry = { path = "../bevy_type_registry", version = "0.1" }
bevy_math = { path = "../bevy_math", version = "0.1" }
bevy_math = { path = "../bevy_math", version = "0.1" }

# other
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] }
2 changes: 1 addition & 1 deletion crates/bevy_core/src/label.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use bevy_ecs::prelude::*;
use bevy_property::Properties;
use hashbrown::{HashMap, HashSet};
use std::{
borrow::Cow,
collections::{HashMap, HashSet},
fmt::Debug,
ops::{Deref, DerefMut},
};
Expand Down
1 change: 1 addition & 0 deletions crates/bevy_diagnostic/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ bevy_ecs = { path = "../bevy_ecs", version = "0.1" }

# other
uuid = { version = "0.8", features = ["v4", "serde"] }
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] }
3 changes: 2 additions & 1 deletion crates/bevy_diagnostic/src/diagnostic.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use hashbrown::HashMap;
use std::{
collections::{HashMap, VecDeque},
collections::VecDeque,
time::{Duration, SystemTime},
};
use uuid::Uuid;
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_diagnostic/src/system_profiler.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use crate::{Diagnostic, DiagnosticId, Diagnostics};
use bevy_ecs::{Profiler, Res, ResMut};
use hashbrown::HashMap;
use std::{
borrow::Cow,
collections::HashMap,
sync::{Arc, RwLock},
time::Instant,
};
Expand Down
1 change: 1 addition & 0 deletions crates/bevy_ecs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ rayon = "1.3"
crossbeam-channel = "0.4.2"
fixedbitset = "0.3.0"
downcast-rs = "1.1.1"
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] }
2 changes: 1 addition & 1 deletion crates/bevy_ecs/hecs/macros/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ pub fn derive_bundle(input: TokenStream) -> TokenStream {

#path::lazy_static::lazy_static! {
static ref ELEMENTS: [TypeId; #n] = {
let mut dedup = std::collections::HashSet::new();
let mut dedup = #path::hashbrown::HashSet::new();
for &(ty, name) in [#((std::any::TypeId::of::<#tys>(), std::any::type_name::<#tys>())),*].iter() {
if !dedup.insert(ty) {
panic!("{} has multiple {} fields; each type must occur at most once!", stringify!(#ident), name);
Expand Down
2 changes: 2 additions & 0 deletions crates/bevy_ecs/hecs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ pub use world::{ArchetypesGeneration, Component, ComponentError, Iter, SpawnBatc
// Unstable implementation details needed by the macros
#[doc(hidden)]
pub use archetype::TypeInfo;
#[doc(hidden)]
pub use hashbrown;
#[cfg(feature = "macros")]
#[doc(hidden)]
pub use lazy_static;
Expand Down
3 changes: 2 additions & 1 deletion crates/bevy_ecs/src/resource/resources.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ use super::{FetchResource, ResourceQuery};
use crate::system::SystemId;
use bevy_hecs::{Archetype, Ref, RefMut, TypeInfo};
use core::any::TypeId;
use std::{collections::HashMap, ptr::NonNull};
use hashbrown::HashMap;
use std::ptr::NonNull;

/// A Resource type
pub trait Resource: Send + Sync + 'static {}
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_ecs/src/schedule/schedule.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ use crate::{
system::{System, SystemId, ThreadLocalExecution},
};
use bevy_hecs::World;
use hashbrown::{HashMap, HashSet};
use std::{
borrow::Cow,
collections::{HashMap, HashSet},
sync::{Arc, Mutex},
};

Expand Down
3 changes: 2 additions & 1 deletion crates/bevy_ecs/src/system/system.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use crate::resource::Resources;
use bevy_hecs::{Access, Query, World};
use fixedbitset::FixedBitSet;
use std::{any::TypeId, borrow::Cow, collections::HashSet};
use hashbrown::HashSet;
use std::{any::TypeId, borrow::Cow};

/// Determines the strategy used to run the `run_thread_local` function in a [System]
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
Expand Down
4 changes: 4 additions & 0 deletions crates/bevy_input/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ license = "MIT"
keywords = ["bevy"]

[dependencies]
# bevy
bevy_app = { path = "../bevy_app", version = "0.1" }
bevy_ecs = { path = "../bevy_ecs", version = "0.1" }
bevy_math = { path = "../bevy_math", version = "0.1" }

# other
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] }
3 changes: 2 additions & 1 deletion crates/bevy_input/src/input.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use std::{collections::HashSet, hash::Hash};
use hashbrown::HashSet;
use std::hash::Hash;

/// A "press-able" input of type `T`
pub struct Input<T> {
Expand Down
1 change: 1 addition & 0 deletions crates/bevy_property/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ erased-serde = "0.3"
bevy_ron = {path = "../bevy_ron", version = "0.1.0"}
serde = "1"
smallvec = {version = "1.4", features = ["serde"]}
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more", "serde"] }
3 changes: 2 additions & 1 deletion crates/bevy_property/src/dynamic_properties.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ use crate::{
property_serde::{DynamicPropertiesDeserializer, DynamicPropertiesSerializer, Serializable},
DeserializeProperty, Properties, Property, PropertyIter, PropertyType, PropertyTypeRegistry,
};
use hashbrown::HashMap;
use serde::de::DeserializeSeed;
use std::{any::Any, borrow::Cow, collections::HashMap};
use std::{any::Any, borrow::Cow};

pub struct DynamicProperties {
pub type_name: String,
Expand Down
8 changes: 2 additions & 6 deletions crates/bevy_property/src/impl_property/impl_property_std.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,9 @@ use crate::{
property_serde::{SeqSerializer, Serializable},
Properties, Property, PropertyIter, PropertyType, PropertyTypeRegistry,
};
use hashbrown::{HashMap, HashSet};
use serde::{Deserialize, Serialize};
use std::{
any::Any,
collections::{BTreeMap, HashMap, HashSet},
hash::Hash,
ops::Range,
};
use std::{any::Any, collections::BTreeMap, hash::Hash, ops::Range};

impl<T> Properties for Vec<T>
where
Expand Down
6 changes: 2 additions & 4 deletions crates/bevy_property/src/type_registry.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
use crate::{DeserializeProperty, Property};
use std::{
any::TypeId,
collections::{HashMap, HashSet},
};
use hashbrown::{HashMap, HashSet};
use std::any::TypeId;

#[derive(Default)]
pub struct PropertyTypeRegistry {
Expand Down
2 changes: 2 additions & 0 deletions crates/bevy_render/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ downcast-rs = "1.1.1"
thiserror = "1.0"
anyhow = "1.0"
hexasphere = "0.1.5"
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] }
ahash = "0.4.4"

[features]
png = ["image/png"]
Expand Down
3 changes: 2 additions & 1 deletion crates/bevy_render/src/batch/batcher.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use super::Batch;
use hashbrown::HashMap;
use smallvec::{smallvec, SmallVec};
use std::{borrow::Cow, collections::HashMap, hash::Hash};
use std::{borrow::Cow, hash::Hash};

// TODO: add sorting by primary / secondary handle to reduce rebinds of data

Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_render/src/camera/active_cameras.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use super::Camera;
use bevy_ecs::{Entity, Query, ResMut};
use std::collections::HashMap;
use hashbrown::HashMap;

#[derive(Default)]
pub struct ActiveCameras {
Expand Down
3 changes: 2 additions & 1 deletion crates/bevy_render/src/mesh/mesh.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ use bevy_asset::{AssetEvent, Assets, Handle};
use bevy_core::AsBytes;
use bevy_ecs::{Local, Query, Res, ResMut};
use bevy_math::*;
use std::{borrow::Cow, collections::HashSet};
use hashbrown::HashSet;
use std::borrow::Cow;
use thiserror::Error;

pub const VERTEX_BUFFER_ASSET_INDEX: usize = 0;
Expand Down
8 changes: 3 additions & 5 deletions crates/bevy_render/src/pipeline/bind_group.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
use super::BindingDescriptor;
use std::{
collections::hash_map::DefaultHasher,
hash::{Hash, Hasher},
};
use ahash::AHasher;
use std::hash::{Hash, Hasher};

#[derive(Clone, Debug, Eq)]
pub struct BindGroupDescriptor {
Expand All @@ -27,7 +25,7 @@ impl BindGroupDescriptor {
}

pub fn update_id(&mut self) {
let mut hasher = DefaultHasher::new();
let mut hasher = AHasher::default();
self.hash(&mut hasher);
self.id = BindGroupDescriptorId(hasher.finish());
}
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_render/src/pipeline/pipeline_compiler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ use crate::{
};
use bevy_asset::{Assets, Handle};
use bevy_property::{Properties, Property};
use hashbrown::{HashMap, HashSet};
use once_cell::sync::Lazy;
use serde::{Deserialize, Serialize};
use std::collections::{HashMap, HashSet};
#[derive(Clone, Eq, PartialEq, Debug, Properties)]
pub struct PipelineSpecialization {
pub shader_specialization: ShaderSpecialization,
Expand Down
3 changes: 2 additions & 1 deletion crates/bevy_render/src/pipeline/pipeline_layout.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use super::{BindGroupDescriptor, VertexBufferDescriptor, VertexBufferDescriptors};
use crate::shader::{ShaderLayout, GL_VERTEX_INDEX};
use std::{collections::HashMap, hash::Hash};
use hashbrown::HashMap;
use std::hash::Hash;

#[derive(Clone, Debug, Default)]
pub struct PipelineLayout {
Expand Down
3 changes: 2 additions & 1 deletion crates/bevy_render/src/pipeline/vertex_buffer_descriptor.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use super::VertexFormat;
use std::{borrow::Cow, collections::HashMap};
use hashbrown::HashMap;
use std::borrow::Cow;

pub use bevy_derive::AsVertexBufferDescriptor;

Expand Down
6 changes: 4 additions & 2 deletions crates/bevy_render/src/render_graph/graph.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use super::{Edge, Node, NodeId, NodeLabel, NodeState, RenderGraphError, SlotLabel, SystemNode};
use bevy_ecs::{Commands, Schedule};
use std::{borrow::Cow, collections::HashMap, fmt::Debug};
use hashbrown::HashMap;
use std::{borrow::Cow, fmt::Debug};

pub struct RenderGraph {
nodes: HashMap<NodeId, NodeState>,
Expand Down Expand Up @@ -300,7 +301,8 @@ mod tests {
renderer::{RenderContext, RenderResourceType},
};
use bevy_ecs::{Resources, World};
use std::{collections::HashSet, iter::FromIterator};
use hashbrown::HashSet;
use std::iter::FromIterator;

#[derive(Debug)]
struct TestNode {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ use crate::{

use bevy_asset::{Assets, Handle};
use bevy_ecs::{Commands, IntoQuerySystem, Local, Query, Res, ResMut, Resources, System, World};
use hashbrown::HashMap;
use renderer::{AssetRenderResourceBindings, BufferId, RenderResourceType, RenderResources};
use std::{collections::HashMap, marker::PhantomData, ops::DerefMut};
use std::{marker::PhantomData, ops::DerefMut};

pub const BIND_BUFFER_ALIGNMENT: usize = 256;
#[derive(Debug)]
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_render/src/render_graph/schedule.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use super::{NodeId, NodeState, RenderGraph, RenderGraphError};
use std::collections::HashMap;
use hashbrown::HashMap;
use thiserror::Error;

#[derive(Error, Debug)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ use crate::{
};
use bevy_asset::{Assets, Handle, HandleUntyped};
use bevy_window::Window;
use hashbrown::HashMap;
use std::{
collections::HashMap,
ops::Range,
sync::{Arc, RwLock},
};
Expand Down
4 changes: 2 additions & 2 deletions crates/bevy_render/src/renderer/render_resource/bind_group.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use super::{BufferId, RenderResourceBinding, SamplerId, TextureId};
use ahash::AHasher;
use std::{
collections::hash_map::DefaultHasher,
hash::{Hash, Hasher},
ops::Range,
sync::Arc,
Expand Down Expand Up @@ -32,7 +32,7 @@ impl BindGroup {
pub struct BindGroupBuilder {
pub indexed_bindings: Vec<IndexedBinding>,
pub dynamic_uniform_indices: Vec<u32>,
pub hasher: DefaultHasher,
pub hasher: AHasher,
}

impl BindGroupBuilder {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,8 @@ use crate::{
renderer::RenderResourceContext,
};
use bevy_asset::{Handle, HandleUntyped};
use std::{
collections::{HashMap, HashSet},
hash::Hash,
ops::Range,
};
use hashbrown::{HashMap, HashSet};
use std::{hash::Hash, ops::Range};
use uuid::Uuid;

#[derive(Clone, Eq, Debug)]
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_render/src/shader/shader_reflect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ use crate::{
texture::{TextureComponentType, TextureViewDimension},
};
use bevy_core::AsBytes;
use hashbrown::HashSet;
use spirv_reflect::{
types::{
ReflectDescriptorBinding, ReflectDescriptorSet, ReflectDescriptorType, ReflectDimension,
ReflectInterfaceVariable, ReflectTypeDescription, ReflectTypeFlags,
},
ShaderModule,
};
use std::collections::HashSet;

/// Defines the memory layout of a shader
#[derive(Debug, Clone, PartialEq, Eq)]
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_render/src/texture/texture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use bevy_app::prelude::{EventReader, Events};
use bevy_asset::{AssetEvent, Assets, Handle};
use bevy_ecs::{Res, ResMut};
use bevy_math::Vec2;
use std::collections::HashSet;
use hashbrown::HashSet;

pub const TEXTURE_ASSET_INDEX: usize = 0;
pub const SAMPLER_ASSET_INDEX: usize = 1;
Expand Down
1 change: 1 addition & 0 deletions crates/bevy_ron/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ base64 = "0.12"
bitflags = "1.0.4"
indexmap = { version = "1.0.2", features = ["serde-1"], optional = true }
serde = { version = "1.0.60", features = ["serde_derive"] }
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] }

[dev-dependencies]
serde_bytes = "0.11"
Expand Down
Loading