Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* add run_deferred calls after all test cases additionally, run_deferred now allocates a pretty massive amount of memory in the hopes of filling up the thread and global caches. it seems to work pretty reliably, but it would be better if crossbeam-epoch exposed an API for directly clearing out the thread and global caches. * update copyright year in LICENSE to 2020 * add StripedHashMap (#14) * move all HashMap code of note into BucketArrayRef BucketArrayRef abstracts away the necessary parts of a hash map behind references. This will make implementing the striped table extremely easy! * add striped::map::HashMap, alias as StripedHashMap StripedHashMap partitions a hash map into submaps, where each submap is allocated separately. This is an effort to further spread entries around in memory and reduce contention. * impl Drop for striped::map::HashMap whoops! * add #[inline] to all important table operations all of these just dispatch out to another member function or to a BucketArrayRef function. kind of wasteful to not inline them! * reorder arguments to StripedHashMap constructors to match the names of the functions * correct feature names * memset+Vec::set_len to write a lot of Shared::null this provides a measurable boost to the performance of functions like with_capacity. yes, unsafe, but also yes, really fast. * double default minimum stripe amount empirically provides the best performance * reorganize tests into an icky macro invocation * bump version to 0.4.0 * refer to segments as segments, not stripes in the context of a hash table, striping refers to using a (relatively) small set of locks per bucket. segmenting, the correct term, refers to composing a large hash map out of several smaller hash maps (segments).
- Loading branch information