From f7f9a131e400bc995d7ef152e559b1e70ecd85e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Renault?= Date: Mon, 2 Dec 2024 10:15:58 +0100 Subject: [PATCH] Improve copying bytes into aligned memory area --- crates/milli/src/update/new/channel.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/crates/milli/src/update/new/channel.rs b/crates/milli/src/update/new/channel.rs index 7b083341b..7a997c3af 100644 --- a/crates/milli/src/update/new/channel.rs +++ b/crates/milli/src/update/new/channel.rs @@ -226,11 +226,10 @@ impl ArroySetVectors { frame: &FrameGrantR<'_>, vec: &'v mut Vec, ) -> &'v [f32] { - vec.clear(); - Self::embeddings_bytes(frame).chunks_exact(mem::size_of::()).for_each(|bytes| { - let f = bytes.try_into().map(f32::from_ne_bytes).unwrap(); - vec.push(f); - }); + let embeddings_bytes = Self::embeddings_bytes(frame); + let embeddings_count = embeddings_bytes.len() / mem::size_of::(); + vec.resize(embeddings_count, 0.0); + bytemuck::cast_slice_mut(vec.as_mut()).copy_from_slice(embeddings_bytes); &vec[..] } }