pub struct BuildConf<S = BuildDefaultSeededHasher> {
pub hash_builder: S,
pub cache_threshold: usize,
pub relative_level_size: u16,
pub use_multiple_threads: bool,
}Expand description
Build configuration that is accepted by Function constructors.
See field descriptions for details.
Fields§
§hash_builder: SThe family of hash functions used by the constructed FMPH. (default: BuildDefaultSeededHasher)
cache_threshold: usizeThe threshold for the number of keys below which their hashes will be cached during level construction.
(default: BuildConf::DEFAULT_CACHE_THRESHOLD)
Caching speeds up level construction at the expense of memory consumption during construction
(caching a single key requires 8 bytes of memory).
Caching is particularly recommended for keys with complex types whose hashing is slow.
It is possible to use a value of 0 to disable caching completely, or usize::MAX to use it on all levels.
relative_level_size: u16Size of each level given as a percentage of the number of level input keys. (default: 100)
A value of 100 minimizes the size of the constructed minimum perfect hash function. Larger values speed up evaluation at the expense of increased size. For example, the values 100 and 200 lead to the sizes of approximately 2.8 and 3.4 bits per input key, respectively. It does not make sense to use values below 100.
use_multiple_threads: boolWhether to use multiple threads during construction. (default: true)
If true, the construction will be performed using the default rayon thread pool.
Implementations§
Source§impl BuildConf
impl BuildConf
Sourcepub fn mt(use_multiple_threads: bool) -> Self
pub fn mt(use_multiple_threads: bool) -> Self
Returns configuration that potentially uses multiple threads to build Function.
Sourcepub fn ct(cache_threshold: usize) -> Self
pub fn ct(cache_threshold: usize) -> Self
Returns configuration that uses custom cache_threshold to build Function.
Sourcepub fn ct_mt(cache_threshold: usize, use_multiple_threads: bool) -> Self
pub fn ct_mt(cache_threshold: usize, use_multiple_threads: bool) -> Self
Returns configuration that uses custom cache_threshold and
potentially uses multiple threads to build Function.
Sourcepub fn lsize(relative_level_size: u16) -> Self
pub fn lsize(relative_level_size: u16) -> Self
Returns configuration that uses at each level a bit-array
of size relative_level_size
given as a percent of number of level input keys.
Sourcepub fn lsize_ct(relative_level_size: u16, cache_threshold: usize) -> Self
pub fn lsize_ct(relative_level_size: u16, cache_threshold: usize) -> Self
Returns configuration that uses custom relative_level_size
and cache_threshold to build Function.
Sourcepub fn lsize_mt(relative_level_size: u16, use_multiple_threads: bool) -> Self
pub fn lsize_mt(relative_level_size: u16, use_multiple_threads: bool) -> Self
Returns configuration that potentially uses multiple threads and
at each level a bit-array of size relative_level_size
given as a percent of number of level input keys.
Source§impl<S> BuildConf<S>
impl<S> BuildConf<S>
Sourcepub const DEFAULT_CACHE_THRESHOLD: usize
pub const DEFAULT_CACHE_THRESHOLD: usize
The default value for relative_level_size,
which results in building the cache with a maximum size of 1GB.
Sourcepub fn hash(hash_builder: S) -> Self
pub fn hash(hash_builder: S) -> Self
Returns configuration that uses custom hash_builder.
Sourcepub fn hash_lsize(hash_builder: S, relative_level_size: u16) -> Self
pub fn hash_lsize(hash_builder: S, relative_level_size: u16) -> Self
Returns configuration that uses custom hash_builder and relative_level_size.
Sourcepub fn hash_lsize_mt(
hash_builder: S,
relative_level_size: u16,
use_multiple_threads: bool,
) -> Self
pub fn hash_lsize_mt( hash_builder: S, relative_level_size: u16, use_multiple_threads: bool, ) -> Self
Returns configuration that uses custom hash_builder, relative_level_size
and potentially uses multiple threads to build Function.
Sourcepub fn hash_lsize_ct(
hash_builder: S,
relative_level_size: u16,
cache_threshold: usize,
) -> Self
pub fn hash_lsize_ct( hash_builder: S, relative_level_size: u16, cache_threshold: usize, ) -> Self
Returns configuration that uses custom hash_builder,
relative_level_size and cache_threshold
to build Function.
Sourcepub fn hash_lsize_ct_mt(
hash_builder: S,
relative_level_size: u16,
cache_threshold: usize,
use_multiple_threads: bool,
) -> Self
pub fn hash_lsize_ct_mt( hash_builder: S, relative_level_size: u16, cache_threshold: usize, use_multiple_threads: bool, ) -> Self
Returns configuration that uses custom hash_builder,
relative_level_size, cache_threshold
and potentially uses multiple threads to build Function.
Trait Implementations§
Auto Trait Implementations§
impl<S> Freeze for BuildConf<S>where
S: Freeze,
impl<S> RefUnwindSafe for BuildConf<S>where
S: RefUnwindSafe,
impl<S> Send for BuildConf<S>where
S: Send,
impl<S> Sync for BuildConf<S>where
S: Sync,
impl<S> Unpin for BuildConf<S>where
S: Unpin,
impl<S> UnsafeUnpin for BuildConf<S>where
S: UnsafeUnpin,
impl<S> UnwindSafe for BuildConf<S>where
S: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
Source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more