None
EN
Static search trees: 40x faster than binary search
['Ragnar', 'Groot Koerkamp']
home on CuriousCoding
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 pub fn find_splat64(&self, q_simd: Simd<u32, 8>) -> usize { let low: Simd<u32, 8> = Simd::from_slice(&self.data[0..N / 2]); let high: Simd<u32, 8> = Simd::from_slice(&self.data[N / 2..N]); unsafe { let q_simd: Simd<i32, 8> = t(q_simd); let mask_low = q_simd.simd_gt(t(low)); let mask_high = q_simd.simd_gt(t(high)); use std::mem::transmute as t; let merged = _mm256_packs_epi32(t(mask_low), t(mask_high)); let mask = _mm256_movemask_epi8(merged); - mask.count_ones() as usize / 2 + mask.count_ones() as usize * 32 } } pub fn batch_byte_ptr<const P: usize>(&self, qb: &[u32; P]) -> [u32; P] { let mut k = [0; P]; let q_simd = qb.map(|q| Simd::<u32, 8>::splat(q)); let offsets = self…