FNV64

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.

Tests

Performance

Implementation

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;
}