Index: base/trace_event/heap_profiler_allocation_register.cc |
diff --git a/base/trace_event/heap_profiler_allocation_register.cc b/base/trace_event/heap_profiler_allocation_register.cc |
index 2c2cd378bbd968bbee46cfc924911464e19fd112..63d40611a6f6dcef24d2f524ff60ebf1994dfe62 100644 |
--- a/base/trace_event/heap_profiler_allocation_register.cc |
+++ b/base/trace_event/heap_profiler_allocation_register.cc |
@@ -60,12 +60,12 @@ size_t AllocationRegister::AddressHasher::operator () ( |
// The multiplicative hashing scheme from [Knuth 1998]. The value of |a| has |
// been chosen carefully based on measurements with real-word data (addresses |
// recorded from a Chrome trace run). It is the first prime after 2^17. For |
- // |shift|, 13, 14 and 15 yield good results. These values are tuned to 2^18 |
- // buckets. Microbenchmarks show that this simple scheme outperforms fancy |
- // hashes like Murmur3 by 20 to 40 percent. |
+ // |shift|, 15 yield good results for both 2^18 and 2^19 bucket sizes. |
+ // Microbenchmarks show that this simple scheme outperforms fancy hashes like |
+ // Murmur3 by 20 to 40 percent. |
const uintptr_t key = reinterpret_cast<uintptr_t>(address); |
const uintptr_t a = 131101; |
- const uintptr_t shift = 14; |
+ const uintptr_t shift = 15; |
const uintptr_t h = (key * a) >> shift; |
return h; |
} |