5171cc76c2
perf: buffer SipHasher128 This is an attempt to improve Siphasher128 performance by buffering input. Although it reduces instruction count, I'm not confident the effect on wall times, or lack-thereof, is worth the change. --- Additional notes not reflected in source comments: * Implementation choices were guided by a combination of results from rustc-perf and micro-benchmarks, mostly the former. * ~~I tried a couple of different struct layouts that might be more cache friendly with no obvious effect.~~ Update: a particular struct layout was chosen, but it's not critical to performance. See comments in source and discussion below. * I suspect that buffering would be important to a SIMD-accelerated algorithm, but from what I've read and my own tests, SipHash does not seem very amenable to SIMD acceleration, at least by SSE. |
||
---|---|---|
.. | ||
base_n | ||
binary_search_util | ||
graph | ||
obligation_forest | ||
owning_ref | ||
sip128 | ||
small_c_str | ||
snapshot_map | ||
sorted_map | ||
sso | ||
stable_hasher | ||
tagged_ptr | ||
tiny_list | ||
transitive_relation | ||
atomic_ref.rs | ||
base_n.rs | ||
box_region.rs | ||
captures.rs | ||
const_cstr.rs | ||
fingerprint.rs | ||
flock.rs | ||
frozen.rs | ||
fx.rs | ||
jobserver.rs | ||
lib.rs | ||
macros.rs | ||
map_in_place.rs | ||
profiling.rs | ||
ptr_key.rs | ||
sharded.rs | ||
sip128.rs | ||
small_c_str.rs | ||
sorted_map.rs | ||
stable_hasher.rs | ||
stable_map.rs | ||
stable_set.rs | ||
stack.rs | ||
svh.rs | ||
sync.rs | ||
tagged_ptr.rs | ||
temp_dir.rs | ||
thin_vec.rs | ||
tiny_list.rs | ||
transitive_relation.rs | ||
unhash.rs | ||
vec_linked_list.rs | ||
work_queue.rs |