benchmarking Perl client hash functions
Greg Whalin
greg@meetup.com
Sun, 18 Jul 2004 11:20:23 -0400
In the Java client, I have the default hashing being String.hashCode()
as the JVM will keep around a poll of String objects, and thus, it is
very likely, the hashcode will only need to be computed once for a given
string. This is obviously very very fast. However, I did make sure to
duplicate the perl hashing method so as to maintain compatibility
between different clients. This is a setting that is left up to the end
user to select when the connection pool (to the memcached servers) is
instantiated. I am a big fan of leaving the choice up to the end user.
In our install, we do not ever intend on using multiple clients to
access our cache (in a way where the hashing matters in any rate), so we
obviously care more about performance and good bucket distribution than
we do about being compatible with the PHP or Perl clients. However,
this certainly may not be the case in other installations, and there a
choice seems like a very good idea.
Brad Fitzpatrick wrote:
> That could be disasterous if one client has the module and another
> doesn't. Sets would go one place, deletes another... would get ugly, not
> to mention low hit rates.
>
> I think if we switch, the thing we switch to should be required, or the
> caller must explicitly choose their hashing scheme (when they provide more
> than one server?).
>
> - Brad