@@ -131,6 +131,8 @@ macro_rules! bench_file_simd_json {
131
131
} => {
132
132
133
133
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 ) ;
134
136
135
137
print!( "{:22}" , $path) ;
136
138
io:: stdout( ) . flush( ) . unwrap( ) ;
@@ -149,7 +151,7 @@ macro_rules! bench_file_simd_json {
149
151
for _ in 0 ..num_trials {
150
152
data. as_mut_slice( ) . clone_from_slice( contents. as_slice( ) ) ;
151
153
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( ) ;
153
155
timer. stop( ) ;
154
156
}
155
157
let dur = benchmark. min_elapsed( ) ;
@@ -164,7 +166,7 @@ macro_rules! bench_file_simd_json {
164
166
use simd_json:: prelude:: * ;
165
167
let len = contents. len( ) ;
166
168
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( ) ;
168
170
let dur = timer:: bench_with_buf( num_trials, len, |out| {
169
171
dom. write( out) . unwrap( )
170
172
} ) ;
@@ -184,7 +186,7 @@ macro_rules! bench_file_simd_json {
184
186
for _ in 0 ..num_trials {
185
187
data. as_mut_slice( ) . clone_from_slice( contents. as_slice( ) ) ;
186
188
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( ) ;
188
190
timer. stop( ) ;
189
191
}
190
192
let dur = benchmark. min_elapsed( ) ;
@@ -197,7 +199,7 @@ macro_rules! bench_file_simd_json {
197
199
use simd_json_derive:: Serialize ;
198
200
let len = contents. len( ) ;
199
201
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( ) ;
201
203
let dur = timer:: bench_with_buf( num_trials, len, |out| {
202
204
parsed. json_write( out) . unwrap( ) ;
203
205
} ) ;
@@ -335,8 +337,12 @@ where
335
337
feature = "lib-simd-json" ,
336
338
any( feature = "parse-dom" , feature = "stringify-dom" )
337
339
) ) ]
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)
340
346
}
341
347
342
348
// #[cfg(all(
@@ -354,9 +360,13 @@ fn simd_json_parse_dom(bytes: &mut [u8]) -> simd_json::Result<simd_json::Borrowe
354
360
feature = "lib-simd-json" ,
355
361
any( feature = "parse-struct" , feature = "stringify-struct" )
356
362
) ) ]
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 >
358
368
where
359
369
T : simd_json_derive:: Deserialize < ' de > + ' de ,
360
370
{
361
- T :: from_slice ( bytes)
371
+ T :: from_slice_with_buffers ( bytes, input_buffer , string_buffer )
362
372
}
0 commit comments