64 bit variant of FNV. By doing byte at a time mixing, FNV style functions slow down with each increase in the number of hash bits. FNV64 is approaching glacial speeds.
finline u64 fastcall FNV64( const u8 *key, u64 len, u64 seed ) {
const u64 c = 1099511628211;
u64 h = 0xcbf29ce484222325 + seed + len;
for ( ; len & ~1; len -= 2, key += 2 )
h = ( ( ( h * c ) ^ key[0] ) * c ) ^ key[1];
if ( len & 1 )
h = ( h * c ) ^ key[0];
return h;
}