Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bugfix 1268: swap out xxhash for grouping (#1416)
Fixes #1268 Replace `xxhash` for `std::hash` for hash-based groupings. Experimented with [highwayhash](https://github.com/google/highwayhash) as well, but this was slower for numeric types. Newly added benchmarks results: `xxhash` ``` Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------- BM_hash_grouping_int<int8_t >/100000/10/2 0.474 ms 0.474 ms 5 BM_hash_grouping_int<int8_t >/100000/100000/2 0.459 ms 0.459 ms 5 BM_hash_grouping_int<int16_t>/100000/10/2 0.459 ms 0.459 ms 5 BM_hash_grouping_int<int16_t>/100000/100000/2 2.22 ms 2.22 ms 5 BM_hash_grouping_int<int32_t>/100000/10/2 0.524 ms 0.524 ms 5 BM_hash_grouping_int<int32_t>/100000/100000/2 0.527 ms 0.527 ms 5 BM_hash_grouping_int<int64_t>/100000/10/2 0.553 ms 0.553 ms 5 BM_hash_grouping_int<int64_t>/100000/100000/2 1.34 ms 1.34 ms 5 BM_hash_grouping_string/100000/10/2/10 1.45 ms 1.45 ms 5 BM_hash_grouping_string/100000/100000/2/10 2.45 ms 2.45 ms 5 BM_hash_grouping_string/100000/10/2/100 0.378 ms 0.378 ms 5 BM_hash_grouping_string/100000/100000/2/100 1.57 ms 1.57 ms 5 ``` `highwayhash` ``` Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------- BM_hash_grouping_int<int8_t>/100000/10/2 6.21 ms 6.21 ms 100 BM_hash_grouping_int<int8_t>/100000/100000/2 6.15 ms 6.15 ms 100 BM_hash_grouping_int<int16_t>/100000/10/2 6.17 ms 6.17 ms 100 BM_hash_grouping_int<int16_t>/100000/100000/2 6.17 ms 6.17 ms 100 BM_hash_grouping_int<int32_t>/100000/10/2 6.38 ms 6.38 ms 100 BM_hash_grouping_int<int32_t>/100000/100000/2 6.43 ms 6.43 ms 100 BM_hash_grouping_int<int64_t>/100000/10/2 6.54 ms 6.54 ms 100 BM_hash_grouping_int<int64_t>/100000/100000/2 6.45 ms 6.45 ms 100 BM_hash_grouping_string/100000/10/2/10 0.539 ms 0.539 ms 100 BM_hash_grouping_string/100000/100000/2/10 0.811 ms 0.811 ms 100 BM_hash_grouping_string/100000/10/2/100 0.287 ms 0.287 ms 100 BM_hash_grouping_string/100000/100000/2/100 0.655 ms 0.655 ms 100 ``` `std::hash` ``` Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------- BM_hash_grouping_int<int8_t>/100000/10/2 0.225 ms 0.225 ms 100 BM_hash_grouping_int<int8_t>/100000/100000/2 0.207 ms 0.207 ms 100 BM_hash_grouping_int<int16_t>/100000/10/2 0.216 ms 0.216 ms 100 BM_hash_grouping_int<int16_t>/100000/100000/2 0.213 ms 0.213 ms 100 BM_hash_grouping_int<int32_t>/100000/10/2 0.213 ms 0.213 ms 100 BM_hash_grouping_int<int32_t>/100000/100000/2 0.207 ms 0.207 ms 100 BM_hash_grouping_int<int64_t>/100000/10/2 0.208 ms 0.208 ms 100 BM_hash_grouping_int<int64_t>/100000/100000/2 0.217 ms 0.217 ms 100 BM_hash_grouping_string/100000/10/2/10 0.504 ms 0.504 ms 100 BM_hash_grouping_string/100000/100000/2/10 0.624 ms 0.624 ms 100 BM_hash_grouping_string/100000/10/2/100 0.262 ms 0.262 ms 100 BM_hash_grouping_string/100000/100000/2/100 0.542 ms 0.542 ms 100 ```
- Loading branch information