Closed ogxd closed 6 months ago
Here is the current output of this bench:
Bench GxHash
✅ avalanche::<B,4>()
✅ avalanche::<B,10>()
✅ avalanche::<B,32>()
✅ avalanche::<B,128>()
✅ avalanche::<B,512>()
✅ distribution_values::<B,4>(128*128)
✅ distribution_values::<B,16>(128*128)
✅ distribution_values::<B,128>(128*128)
✅ distribution_values::<B,512>(128*128)
✅ distribution_bits::<B,4>()
✅ distribution_bits::<B,16>()
✅ distribution_bits::<B,128>()
✅ distribution_bits::<B,512>()
✅ collisions_padded_zeroes::<B>(128*128)
✅ collisions_flipped_n_bits::<B,2>(9)
✅ collisions_flipped_n_bits::<B,3>(9)
✅ collisions_flipped_n_bits::<B,4>(7)
✅ collisions_flipped_n_bits::<B,5>(6)
✅ collisions_flipped_n_bits::<B,6>(5)
✅ collisions_flipped_n_bits::<B,7>(5)
✅ collisions_flipped_n_bits::<B,9>(4)
✅ collisions_flipped_n_bits::<B,20>(4)
✅ collisions_flipped_n_bits::<B,32>(3)
✅ collisions_flipped_n_bits::<B,64>(3)
✅ collisions_flipped_n_bits::<B,256>(2)
✅ collisions_powerset_bytes::<B>(&[0,1,2,3,4,5,6,7,8,9])
❌ collisions_permuted_hasher_values::<B,u8>(&[0,1,2,3,4,5,6,7,8,9])
| Score: 0.9999997244268077. Expected is 0.
❌ collisions_permuted_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9])
| Score: 0.9999997244268077. Expected is 0.
❌ collisions_powerset_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])
| Score: 0.9960498809814453. Expected is 0.
Bench AHash
✅ avalanche::<B,4>()
✅ avalanche::<B,10>()
✅ avalanche::<B,32>()
✅ avalanche::<B,128>()
✅ avalanche::<B,512>()
✅ distribution_values::<B,4>(128*128)
✅ distribution_values::<B,16>(128*128)
✅ distribution_values::<B,128>(128*128)
✅ distribution_values::<B,512>(128*128)
✅ distribution_bits::<B,4>()
✅ distribution_bits::<B,16>()
✅ distribution_bits::<B,128>()
✅ distribution_bits::<B,512>()
✅ collisions_padded_zeroes::<B>(128*128)
✅ collisions_flipped_n_bits::<B,2>(9)
✅ collisions_flipped_n_bits::<B,3>(9)
✅ collisions_flipped_n_bits::<B,4>(7)
✅ collisions_flipped_n_bits::<B,5>(6)
✅ collisions_flipped_n_bits::<B,6>(5)
✅ collisions_flipped_n_bits::<B,7>(5)
✅ collisions_flipped_n_bits::<B,9>(4)
✅ collisions_flipped_n_bits::<B,20>(4)
✅ collisions_flipped_n_bits::<B,32>(3)
✅ collisions_flipped_n_bits::<B,64>(3)
✅ collisions_flipped_n_bits::<B,256>(2)
✅ collisions_powerset_bytes::<B>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u8>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_powerset_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])
Bench T1ha
✅ avalanche::<B,4>()
✅ avalanche::<B,10>()
✅ avalanche::<B,32>()
✅ avalanche::<B,128>()
✅ avalanche::<B,512>()
✅ distribution_values::<B,4>(128*128)
✅ distribution_values::<B,16>(128*128)
✅ distribution_values::<B,128>(128*128)
✅ distribution_values::<B,512>(128*128)
✅ distribution_bits::<B,4>()
✅ distribution_bits::<B,16>()
✅ distribution_bits::<B,128>()
✅ distribution_bits::<B,512>()
✅ collisions_padded_zeroes::<B>(128*128)
✅ collisions_flipped_n_bits::<B,2>(9)
✅ collisions_flipped_n_bits::<B,3>(9)
✅ collisions_flipped_n_bits::<B,4>(7)
✅ collisions_flipped_n_bits::<B,5>(6)
✅ collisions_flipped_n_bits::<B,6>(5)
✅ collisions_flipped_n_bits::<B,7>(5)
✅ collisions_flipped_n_bits::<B,9>(4)
✅ collisions_flipped_n_bits::<B,20>(4)
✅ collisions_flipped_n_bits::<B,32>(3)
✅ collisions_flipped_n_bits::<B,64>(3)
✅ collisions_flipped_n_bits::<B,256>(2)
✅ collisions_powerset_bytes::<B>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u8>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_powerset_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])
Bench XxHash3
✅ avalanche::<B,4>()
✅ avalanche::<B,10>()
✅ avalanche::<B,32>()
✅ avalanche::<B,128>()
✅ avalanche::<B,512>()
✅ distribution_values::<B,4>(128*128)
✅ distribution_values::<B,16>(128*128)
✅ distribution_values::<B,128>(128*128)
✅ distribution_values::<B,512>(128*128)
✅ distribution_bits::<B,4>()
✅ distribution_bits::<B,16>()
✅ distribution_bits::<B,128>()
✅ distribution_bits::<B,512>()
✅ collisions_padded_zeroes::<B>(128*128)
✅ collisions_flipped_n_bits::<B,2>(9)
✅ collisions_flipped_n_bits::<B,3>(9)
✅ collisions_flipped_n_bits::<B,4>(7)
✅ collisions_flipped_n_bits::<B,5>(6)
✅ collisions_flipped_n_bits::<B,6>(5)
✅ collisions_flipped_n_bits::<B,7>(5)
✅ collisions_flipped_n_bits::<B,9>(4)
✅ collisions_flipped_n_bits::<B,20>(4)
✅ collisions_flipped_n_bits::<B,32>(3)
✅ collisions_flipped_n_bits::<B,64>(3)
✅ collisions_flipped_n_bits::<B,256>(2)
✅ collisions_powerset_bytes::<B>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u8>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_powerset_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])
Bench Default
✅ avalanche::<B,4>()
✅ avalanche::<B,10>()
✅ avalanche::<B,32>()
✅ avalanche::<B,128>()
✅ avalanche::<B,512>()
✅ distribution_values::<B,4>(128*128)
✅ distribution_values::<B,16>(128*128)
✅ distribution_values::<B,128>(128*128)
✅ distribution_values::<B,512>(128*128)
✅ distribution_bits::<B,4>()
✅ distribution_bits::<B,16>()
✅ distribution_bits::<B,128>()
✅ distribution_bits::<B,512>()
✅ collisions_padded_zeroes::<B>(128*128)
✅ collisions_flipped_n_bits::<B,2>(9)
✅ collisions_flipped_n_bits::<B,3>(9)
✅ collisions_flipped_n_bits::<B,4>(7)
✅ collisions_flipped_n_bits::<B,5>(6)
✅ collisions_flipped_n_bits::<B,6>(5)
✅ collisions_flipped_n_bits::<B,7>(5)
✅ collisions_flipped_n_bits::<B,9>(4)
✅ collisions_flipped_n_bits::<B,20>(4)
✅ collisions_flipped_n_bits::<B,32>(3)
✅ collisions_flipped_n_bits::<B,64>(3)
✅ collisions_flipped_n_bits::<B,256>(2)
✅ collisions_powerset_bytes::<B>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u8>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_powerset_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])
Bench FNV-1a
❌ avalanche::<B,4>()
| Score: 0.36. Expected is 0.
❌ avalanche::<B,10>()
| Score: 0.17. Expected is 0.
❌ avalanche::<B,32>()
| Score: 0.08. Expected is 0.
❌ avalanche::<B,128>()
| Score: 0.05. Expected is 0.
❌ avalanche::<B,512>()
| Score: 0.04. Expected is 0.
✅ distribution_values::<B,4>(128*128)
✅ distribution_values::<B,16>(128*128)
✅ distribution_values::<B,128>(128*128)
✅ distribution_values::<B,512>(128*128)
✅ distribution_bits::<B,4>()
✅ distribution_bits::<B,16>()
✅ distribution_bits::<B,128>()
✅ distribution_bits::<B,512>()
✅ collisions_padded_zeroes::<B>(128*128)
✅ collisions_flipped_n_bits::<B,2>(9)
✅ collisions_flipped_n_bits::<B,3>(9)
✅ collisions_flipped_n_bits::<B,4>(7)
✅ collisions_flipped_n_bits::<B,5>(6)
✅ collisions_flipped_n_bits::<B,6>(5)
✅ collisions_flipped_n_bits::<B,7>(5)
✅ collisions_flipped_n_bits::<B,9>(4)
✅ collisions_flipped_n_bits::<B,20>(4)
✅ collisions_flipped_n_bits::<B,32>(3)
✅ collisions_flipped_n_bits::<B,64>(3)
✅ collisions_flipped_n_bits::<B,256>(2)
✅ collisions_powerset_bytes::<B>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u8>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_permuted_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9])
✅ collisions_powerset_hasher_values::<B,u32>(&[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])
It can probably be improved, but I consider it good enough for now, at least to tackle the permutation issue