From 274c8109d64b9b13054c8f6a7f423d67f970aab0 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Wed, 24 Jan 2024 17:56:09 +0200 Subject: [PATCH] core: Optimize read_record() The serial type varints are typically just a single byte, so let's allocate at least header size bytes in the vector to reduce need to grow it. --- core/sqlite3_ondisk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/sqlite3_ondisk.rs b/core/sqlite3_ondisk.rs index 3c857969b..c67e98b9e 100644 --- a/core/sqlite3_ondisk.rs +++ b/core/sqlite3_ondisk.rs @@ -301,7 +301,7 @@ pub fn read_record(payload: &[u8]) -> Result { assert!((header_size as usize) >= nr); let mut header_size = (header_size as usize) - nr; pos += nr; - let mut serial_types = Vec::new(); + let mut serial_types = Vec::with_capacity(header_size); while header_size > 0 { let (serial_type, nr) = read_varint(&payload[pos..])?; let serial_type = SerialType::try_from(serial_type)?;