11// Copyright (c) Microsoft Corporation.
22// Licensed under the MIT License.
33
4- #![ feature( allocator_api) ]
5-
64use std:: hint:: black_box;
75use std:: io:: Cursor ;
86use std:: ops:: Range ;
@@ -12,20 +10,22 @@ use std::{mem, vec};
1210use criterion:: { BenchmarkId , Criterion , Throughput , criterion_group, criterion_main} ;
1311use edit:: helpers:: * ;
1412use edit:: simd:: MemsetSafe ;
15- use edit:: { buffer, hash, json, lsh, oklab, simd, unicode} ;
16- use stdext:: arena:: { Arena , scratch_arena} ;
13+ use edit:: { buffer, glob, hash, json, lsh, oklab, simd, unicode} ;
14+ use stdext:: arena:: { self , Arena , scratch_arena} ;
15+ use stdext:: collections:: BVec ;
16+ use stdext:: unicode:: Utf8Chars ;
1717use stdext:: { arena, glob, varint} ;
1818
1919struct EditingTracePatch < ' a > ( usize , usize , & ' a str ) ;
2020
2121struct EditingTraceTransaction < ' a > {
22- patches : Vec < EditingTracePatch < ' a > , & ' a Arena > ,
22+ patches : BVec < ' a , EditingTracePatch < ' a > > ,
2323}
2424
2525struct EditingTraceData < ' a > {
2626 start_content : & ' a str ,
2727 end_content : & ' a str ,
28- txns : Vec < EditingTraceTransaction < ' a > , & ' a Arena > ,
28+ txns : BVec < ' a , EditingTraceTransaction < ' a > > ,
2929}
3030
3131fn bench_buffer ( c : & mut Criterion ) {
@@ -42,24 +42,25 @@ fn bench_buffer(c: &mut Criterion) {
4242 let mut res = EditingTraceData {
4343 start_content : root. get_str ( "startContent" ) . unwrap ( ) ,
4444 end_content : root. get_str ( "endContent" ) . unwrap ( ) ,
45- txns : Vec :: with_capacity_in ( txns . len ( ) , & scratch ) ,
45+ txns : BVec :: empty ( ) ,
4646 } ;
47+ res. txns . reserve ( & * scratch, txns. len ( ) ) ;
4748
4849 for txn in txns {
4950 let txn = txn. as_object ( ) . unwrap ( ) ;
5051 let patches = txn. get_array ( "patches" ) . unwrap ( ) ;
51- let mut txn =
52- EditingTraceTransaction { patches : Vec :: with_capacity_in ( patches. len ( ) , & scratch ) } ;
52+ let mut txn = EditingTraceTransaction { patches : BVec :: empty ( ) } ;
53+ txn . patches . reserve ( & * scratch , patches. len ( ) ) ;
5354
5455 for patch in patches {
5556 let patch = patch. as_array ( ) . unwrap ( ) ;
5657 let offset = patch[ 0 ] . as_number ( ) . unwrap ( ) as usize ;
5758 let del_len = patch[ 1 ] . as_number ( ) . unwrap ( ) as usize ;
5859 let ins_str = patch[ 2 ] . as_str ( ) . unwrap ( ) ;
59- txn. patches . push ( EditingTracePatch ( offset, del_len, ins_str) ) ;
60+ txn. patches . push ( & * scratch , EditingTracePatch ( offset, del_len, ins_str) ) ;
6061 }
6162
62- res. txns . push ( txn) ;
63+ res. txns . push ( & * scratch , txn) ;
6364 }
6465
6566 res
@@ -257,7 +258,7 @@ fn bench_simd_memchr2(c: &mut Criterion) {
257258 }
258259}
259260
260- fn bench_simd_memset < T : MemsetSafe + Copy + Default > ( c : & mut Criterion ) {
261+ fn bench_simd_memset < T : Copy + Default > ( c : & mut Criterion ) {
261262 let mut group = c. benchmark_group ( "simd" ) ;
262263 let name = format ! ( "memset<{}>" , std:: any:: type_name:: <T >( ) ) ;
263264 let size = mem:: size_of :: < T > ( ) ;
@@ -272,7 +273,7 @@ fn bench_simd_memset<T: MemsetSafe + Copy + Default>(c: &mut Criterion) {
272273 & bytes,
273274 |b, & bytes| {
274275 let slice = unsafe { buf. get_unchecked_mut ( ..bytes / size) } ;
275- b. iter ( || simd:: memset ( black_box ( slice) , Default :: default ( ) ) ) ;
276+ b. iter ( || stdext :: simd:: memset ( black_box ( slice) , Default :: default ( ) ) ) ;
276277 } ,
277278 ) ;
278279 }
@@ -304,9 +305,7 @@ fn bench_unicode(c: &mut Criterion) {
304305 c. benchmark_group ( "unicode::Utf8Chars" )
305306 . throughput ( Throughput :: Bytes ( bytes. len ( ) as u64 ) )
306307 . bench_function ( "next" , |b| {
307- b. iter ( || {
308- unicode:: Utf8Chars :: new ( bytes, 0 ) . fold ( 0u32 , |acc, ch| acc. wrapping_add ( ch as u32 ) )
309- } )
308+ b. iter ( || Utf8Chars :: new ( bytes, 0 ) . fold ( 0u32 , |acc, ch| acc. wrapping_add ( ch as u32 ) ) )
310309 } ) ;
311310}
312311
0 commit comments