From 05319d919136a99190649760165e80d248e24f57 Mon Sep 17 00:00:00 2001 From: Joel Natividad <1980690+jqnatividad@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:37:07 -0500 Subject: [PATCH] `refactor`: use reserve() instead of with_capacity();use simdjson::BorrowedValue instead of OwnedValue to minimize allocations --- src/cmd/template.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/cmd/template.rs b/src/cmd/template.rs index 9eedf02fb..7389b494b 100644 --- a/src/cmd/template.rs +++ b/src/cmd/template.rs @@ -79,6 +79,7 @@ use rayon::{ prelude::IntoParallelRefIterator, }; use serde::Deserialize; +use simd_json::BorrowedValue; use crate::{ config::{Config, Delimiter, DEFAULT_WTR_BUFFER_CAPACITY}, @@ -267,7 +268,8 @@ pub fn run(argv: &[&str]) -> CliResult<()> { .map(|record| { let curr_record = record; - let mut context = simd_json::owned::Object::with_capacity(headers_len); + let mut context = simd_json::borrowed::Object::default(); + context.reserve(headers_len); let mut row_number = 0_u64; if no_headers { @@ -279,13 +281,13 @@ pub fn run(argv: &[&str]) -> CliResult<()> { // set the last field to QSV_ROWNO row_number = atoi_simd::parse::(field.as_bytes()).unwrap(); context.insert( - QSV_ROWNO.to_owned(), - simd_json::OwnedValue::String(field.to_owned()), + std::borrow::Cow::Borrowed(QSV_ROWNO), + BorrowedValue::String(std::borrow::Cow::Borrowed(field)), ); } else { context.insert( - format!("_c{}", i + 1), - simd_json::OwnedValue::String(field.to_owned()), + format!("_c{}", i + 1).into(), + BorrowedValue::String(std::borrow::Cow::Borrowed(field)), ); } } @@ -293,8 +295,8 @@ pub fn run(argv: &[&str]) -> CliResult<()> { // Use header names for (header, field) in headers.iter().zip(curr_record.iter()) { context.insert( - header.to_string(), - simd_json::OwnedValue::String(field.to_owned()), + std::borrow::Cow::Borrowed(header), + BorrowedValue::String(std::borrow::Cow::Borrowed(field)), ); // when headers are defined, the last one is QSV_ROWNO if header == QSV_ROWNO {