Re: [RFC] On watchman support
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Nov 28, 2014, 11:13 UTC
- Message-ID
- <CACsJy8DayFy83JijrkgST5rAbNsst-dgqaP-ebpWXoGKPtp7sA@mail.gmail.com>
- In-Reply-To
- <1416334360.27401.10.camel@leckie>
On Wed, Nov 19, 2014 at 1:12 AM, David Turner <dturner@twopensource.com> wrote:
Show 11 quoted lines
>> Or will you go >> with cityhash now.. I ask because you have another sse optimization >> for hashmap on your watchman branch and that could reduce init time >> for name-hash. Name-hash is used often on case-insensitive fs (less >> often on case-sensitive fs). > > Cityhash would be better, because it has actual engineering effort put > into it; what I did on my branch is a hack that happens to work > decently. As the comment notes, I did not spend much effort on tuning > my implementation. Also, Cityhash doesn't require SSE, so it's more > portable.
Cityhash looks less appealing to me. For one thing it's C++ so linking to C can't be done. I could add a few "extern "C"" to make it work. But if we plan to support it eventually, cityhash must support C out of the box.
Then cityhash does not support case-insensitive hashing. I had to make a CityHash32i version based on CityHash32. It's probably my bugs there, but performance is worse (~120ms) than original hashmap.c (90ms). Enabling sse4.2 helps a bit, but still worse. Using the case-sensitive version in place for memihash and strihash does make cityhash win over hashmap.c, around 50ms (with or without sse4.2). But that's still not as good as your version (~35ms)..
-- Duy