pub fn hamming_distance(a: &[u8; 96], b: &[u8; 96]) -> u32Expand description
Computes Hamming distance using the best available SIMD implementation.
This function automatically detects CPU capabilities at runtime and dispatches to the fastest available implementation:
- AVX2 (x86_64 with AVX2): ~47 cycles per comparison
- Portable: ~300 cycles (safe fallback)
§Arguments
a- First 96-byte binary vector (768 bits)b- Second 96-byte binary vector (768 bits)
§Returns
The number of differing bits (0..=768)
§Performance
Target: <50 CPU cycles on AVX2-capable hardware.
§Safety
This function is completely safe. All unsafe operations are internal and guarded by runtime CPU feature detection.
§Example
use edgevec::quantization::simd;
let a = [0xAA; 96]; // 10101010...
let b = [0x55; 96]; // 01010101...
// All 768 bits differ
let distance = simd::hamming_distance(&a, &b);
assert_eq!(distance, 768);