From 4791d16a8efc42fb40ffab79bcdae4f0e106cd89 Mon Sep 17 00:00:00 2001 From: Matt Mastracci Date: Thu, 7 Mar 2024 10:00:43 -0700 Subject: perf(cli): use faster_hex (#22761) `cli::util::checksum` was showing up on flame graphs because it was concatenating allocated strings. We can use `faster-hex` to improve it. --- ext/kv/lib.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'ext/kv/lib.rs') diff --git a/ext/kv/lib.rs b/ext/kv/lib.rs index 3a868d463..72e1cab30 100644 --- a/ext/kv/lib.rs +++ b/ext/kv/lib.rs @@ -12,6 +12,7 @@ use std::num::NonZeroU32; use std::rc::Rc; use std::time::Duration; +use anyhow::bail; use base64::prelude::BASE64_URL_SAFE; use base64::Engine; use chrono::DateTime; @@ -234,7 +235,7 @@ impl TryFrom for ToV8KvEntry { .map(key_part_to_v8) .collect(), value: entry.value.into(), - versionstamp: hex::encode(entry.versionstamp).into(), + versionstamp: faster_hex::hex_string(&entry.versionstamp).into(), }) } } @@ -511,7 +512,10 @@ fn check_from_v8(value: V8KvCheck) -> Result { let versionstamp = match value.1 { Some(data) => { let mut out = [0u8; 10]; - hex::decode_to_slice(data, &mut out) + if data.len() != out.len() * 2 { + bail!(type_error("invalid versionstamp")); + } + faster_hex::hex_decode(&data, &mut out) .map_err(|_| type_error("invalid versionstamp"))?; Some(out) } @@ -856,7 +860,7 @@ where let result = db.atomic_write(atomic_write).await?; - Ok(result.map(|res| hex::encode(res.versionstamp))) + Ok(result.map(|res| faster_hex::hex_string(&res.versionstamp))) } // (prefix, start, end) -- cgit v1.2.3