From 417300bcd39729f9dac52ba7279b48491527fef4 Mon Sep 17 00:00:00 2001 From: ljedrz Date: Tue, 23 Apr 2024 14:17:56 +0200 Subject: [PATCH 1/2] perf: don't allocate most of the rocksdb keys Signed-off-by: ljedrz --- ledger/store/Cargo.toml | 8 +++++++- ledger/store/src/helpers/rocksdb/internal/map.rs | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ledger/store/Cargo.toml b/ledger/store/Cargo.toml index 2a8fc50486..898f21fa7a 100644 --- a/ledger/store/Cargo.toml +++ b/ledger/store/Cargo.toml @@ -18,7 +18,7 @@ edition = "2021" [features] default = [ "indexmap/rayon", "rayon" ] -rocks = [ "once_cell", "rocksdb", "tracing" ] +rocks = [ "once_cell", "rocksdb", "smallvec", "tracing" ] serial = [ "console/serial", "ledger-block/serial", @@ -117,6 +117,12 @@ version = "1.0" version = "1.0" features = [ "preserve_order" ] +[dependencies.smallvec] +version = "1.11" +default-features = false +features = [ "write" ] +optional = true + [dependencies.tracing] version = "0.1" optional = true diff --git a/ledger/store/src/helpers/rocksdb/internal/map.rs b/ledger/store/src/helpers/rocksdb/internal/map.rs index 58c97f3827..54cb688294 100644 --- a/ledger/store/src/helpers/rocksdb/internal/map.rs +++ b/ledger/store/src/helpers/rocksdb/internal/map.rs @@ -19,6 +19,7 @@ use crate::helpers::{Map, MapRead}; use core::{fmt, fmt::Debug, hash::Hash, mem}; use indexmap::IndexMap; +use smallvec::SmallVec; use std::{borrow::Cow, ops::Deref, sync::atomic::Ordering}; use tracing::error; @@ -519,12 +520,13 @@ impl<'a, V: 'a + Clone + PartialEq + Eq + Serialize + DeserializeOwned> Iterator impl DataMap { #[inline] - fn create_prefixed_key(&self, key: &Q) -> Result> + fn create_prefixed_key(&self, key: &Q) -> Result> where K: Borrow, Q: Serialize + ?Sized, { - let mut raw_key = self.context.clone(); + let mut raw_key: SmallVec<[u8; 64]> = SmallVec::new(); + raw_key.extend_from_slice(&self.context); bincode::serialize_into(&mut raw_key, &key)?; Ok(raw_key) } From 7a20bea3793d8cba7b07bd290a2ec91628064297 Mon Sep 17 00:00:00 2001 From: ljedrz Date: Mon, 6 May 2024 16:32:39 +0200 Subject: [PATCH 2/2] chore: adjust the lockfile Signed-off-by: ljedrz --- Cargo.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.lock b/Cargo.lock index 736ae267fb..3697583dfc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3294,6 +3294,7 @@ dependencies = [ "serde", "serde_json", "serial_test", + "smallvec", "snarkvm-console", "snarkvm-ledger-authority", "snarkvm-ledger-block",