@@ -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 >
358368where
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