rust/compiler/rustc_data_structures/src
bors 5171cc76c2 Auto merge of #77476 - tgnottingham:buffered_siphasher128, r=nnethercote
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.
2020-10-25 09:23:45 +00:00
..
base_n
binary_search_util
graph Don't re-export std::ops::ControlFlow in the compiler. 2020-10-22 17:26:55 -07:00
obligation_forest Turn Outcome into an opaque type to remove some runtime checks 2020-10-15 08:32:41 +02:00
owning_ref
sip128 SipHasher128: improve constant names and add more comments 2020-10-11 23:48:35 -07:00
small_c_str
snapshot_map
sorted_map
sso SsoHashSet/Map - genericiy over Q removed 2020-10-02 20:13:23 -05:00
stable_hasher Stable hashing: add comments and tests concerning platform-independence 2020-09-30 00:57:35 -07:00
tagged_ptr Use T::BITS instead of size_of::<T> * 8. 2020-09-19 06:54:42 +02:00
tiny_list
transitive_relation
atomic_ref.rs
base_n.rs
box_region.rs
captures.rs
const_cstr.rs
fingerprint.rs Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
flock.rs
frozen.rs
fx.rs
jobserver.rs datastructures: replace lazy_static by SyncLazy from std 2020-09-01 22:06:47 +01:00
lib.rs Auto merge of #77476 - tgnottingham:buffered_siphasher128, r=nnethercote 2020-10-25 09:23:45 +00:00
macros.rs Remove unused static_assert macro 2020-09-20 11:40:51 +02:00
map_in_place.rs
profiling.rs Upgrade to measureme 9.0.0 2020-10-24 22:39:42 -04:00
ptr_key.rs
sharded.rs
sip128.rs SipHasher128: improve constant names and add more comments 2020-10-11 23:48:35 -07:00
small_c_str.rs
sorted_map.rs Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
stable_hasher.rs Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
stable_map.rs
stable_set.rs
stack.rs
svh.rs
sync.rs
tagged_ptr.rs
temp_dir.rs Capitalize safety comments 2020-09-08 22:37:18 -04:00
thin_vec.rs
tiny_list.rs
transitive_relation.rs
unhash.rs Avoid rehashing Fingerprint as a map key 2020-09-01 18:27:02 -07:00
vec_linked_list.rs
work_queue.rs Remove unused code from remaining compiler crates 2020-10-14 04:14:32 +02:00