Murmur - Website

Ludicrous speed hashing v1.0. Good avalanching and speed, but with some fatal differentials and poor seed avalanching.

Tests

Performance

Implementation

finline u32 fastcall Murmur( const u8 *key, u32 len, u32 seed ) {
	const u32 m = 0xc6a4a793;
	const u8 r = 16;
	const u8 *data = (const u8 *)key;
	u32 h = len + seed;

	for ( ; len >= 4; len -= 4, data += 4 ) {
		h += *(u32 *)data;
		h *= m;
		h ^= h >> r;
	}

	switch ( len ) {
		case 3: h += data[2] << 16;
		case 2:	h += data[1] << 8;
		case 1:	h += data[0];
			h *= m;
			h ^= h >> r;
		default:;
	}
 
	h *= m;
	h ^= h >> 10;
	h *= m;
	h ^= h >> 17;

	return h;
}