Skip to content
This repository was archived by the owner on May 20, 2024. It is now read-only.

Commit dc38e23

Browse files
committed
Update to make use of array reuse
Signed-off-by: Heinz N. Gies <heinz@licenser.net>
1 parent 6486b0a commit dc38e23

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/main.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ macro_rules! bench_file_simd_json {
131131
} => {
132132

133133
let num_trials = num_trials().unwrap_or(256);
134+
let mut string_buffer = Vec::with_capacity(4096);
135+
let mut input_buffer = simd_json::AlignedBuf::with_capacity(4096);
134136

135137
print!("{:22}", $path);
136138
io::stdout().flush().unwrap();
@@ -149,7 +151,7 @@ macro_rules! bench_file_simd_json {
149151
for _ in 0..num_trials {
150152
data.as_mut_slice().clone_from_slice(contents.as_slice());
151153
let mut timer = benchmark.start();
152-
let _parsed = simd_json_parse_dom(&mut data).unwrap();
154+
let _parsed = simd_json_parse_dom(&mut data, &mut input_buffer, &mut string_buffer).unwrap();
153155
timer.stop();
154156
}
155157
let dur = benchmark.min_elapsed();
@@ -164,7 +166,7 @@ macro_rules! bench_file_simd_json {
164166
use simd_json::prelude::*;
165167
let len = contents.len();
166168
let mut data = contents.clone();
167-
let dom = simd_json_parse_dom(&mut data).unwrap();
169+
let dom = simd_json_parse_dom(&mut data, &mut input_buffer, &mut string_buffer).unwrap();
168170
let dur = timer::bench_with_buf(num_trials, len, |out| {
169171
dom.write(out).unwrap()
170172
});
@@ -184,7 +186,7 @@ macro_rules! bench_file_simd_json {
184186
for _ in 0..num_trials {
185187
data.as_mut_slice().clone_from_slice(contents.as_slice());
186188
let mut timer = benchmark.start();
187-
let _parsed: $structure = simd_json_parse_struct(&mut data).unwrap();
189+
let _parsed: $structure = simd_json_parse_struct(&mut data, &mut input_buffer, &mut string_buffer).unwrap();
188190
timer.stop();
189191
}
190192
let dur = benchmark.min_elapsed();
@@ -197,7 +199,7 @@ macro_rules! bench_file_simd_json {
197199
use simd_json_derive::Serialize;
198200
let len = contents.len();
199201
let mut data = contents.clone();
200-
let parsed: $structure = simd_json_parse_struct(&mut data).unwrap();
202+
let parsed: $structure = simd_json_parse_struct(&mut data, &mut input_buffer, &mut string_buffer).unwrap();
201203
let dur = timer::bench_with_buf(num_trials, len, |out| {
202204
parsed.json_write(out).unwrap();
203205
});
@@ -335,8 +337,12 @@ where
335337
feature = "lib-simd-json",
336338
any(feature = "parse-dom", feature = "stringify-dom")
337339
))]
338-
fn simd_json_parse_dom(bytes: &mut [u8]) -> simd_json::Result<simd_json::BorrowedValue> {
339-
simd_json::to_borrowed_value(bytes)
340+
fn simd_json_parse_dom<'input>(
341+
bytes: &'input mut [u8],
342+
input_buffer: &mut simd_json::AlignedBuf,
343+
string_buffer: &mut [u8],
344+
) -> simd_json::Result<simd_json::BorrowedValue<'input>> {
345+
simd_json::to_borrowed_value_with_buffers(bytes, input_buffer, string_buffer)
340346
}
341347

342348
// #[cfg(all(
@@ -354,9 +360,13 @@ fn simd_json_parse_dom(bytes: &mut [u8]) -> simd_json::Result<simd_json::Borrowe
354360
feature = "lib-simd-json",
355361
any(feature = "parse-struct", feature = "stringify-struct")
356362
))]
357-
fn simd_json_parse_struct<'de, T>(bytes: &'de mut [u8]) -> simd_json::Result<T>
363+
fn simd_json_parse_struct<'de, T>(
364+
bytes: &'de mut [u8],
365+
input_buffer: &mut simd_json::AlignedBuf,
366+
string_buffer: &mut [u8],
367+
) -> simd_json::Result<T>
358368
where
359369
T: simd_json_derive::Deserialize<'de> + 'de,
360370
{
361-
T::from_slice(bytes)
371+
T::from_slice_with_buffers(bytes, input_buffer, string_buffer)
362372
}

0 commit comments

Comments
 (0)