@@ -46,42 +46,44 @@ const SAMPLE_SIZE: u32 = 64;
4646
4747#[ divan:: bench( sample_size = SAMPLE_SIZE , args = SIZES . iter( ) . copied( ) . cartesian_product( PROBABILITIES . iter( ) . copied( ) ) ) ]
4848fn in_place_scalar ( bencher : divan:: Bencher , ( size, probability) : ( usize , f64 ) ) {
49- let mask = create_random_mask ( size, probability) ;
49+ let mask = divan:: black_box ( create_random_mask ( size, probability) ) ;
50+ let data = ( 0 ..size as i32 ) . collect :: < Vec < _ > > ( ) ;
5051 bencher
51- . with_inputs ( || ( 0 ..size as i32 ) . collect :: < Vec < _ > > ( ) )
52- . bench_refs ( |data| filter_in_place_scalar ( data, & mask) )
52+ . with_inputs ( || ( data . clone ( ) , & mask ) )
53+ . bench_refs ( |( data, mask ) | filter_in_place_scalar ( data, mask) )
5354}
5455
5556#[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
5657#[ divan:: bench( sample_size = SAMPLE_SIZE , args = SIZES . iter( ) . copied( ) . cartesian_product( PROBABILITIES . iter( ) . copied( ) ) ) ]
5758fn in_place_avx512 ( bencher : divan:: Bencher , ( size, probability) : ( usize , f64 ) ) {
58- let mask = create_random_mask ( size, probability) ;
59+ let mask = divan:: black_box ( create_random_mask ( size, probability) ) ;
60+ let data = ( 0 ..size as i32 ) . collect :: < Vec < _ > > ( ) ;
5961 bencher
60- . with_inputs ( || ( 0 ..size as i32 ) . collect :: < Vec < _ > > ( ) )
61- . bench_refs ( |data| unsafe { filter_in_place_avx512 ( data, & mask) } )
62+ . with_inputs ( || ( data . clone ( ) , & mask ) )
63+ . bench_refs ( |( data, mask ) | filter_in_place_avx512 ( data, mask) )
6264}
6365
6466#[ divan:: bench( sample_size = SAMPLE_SIZE , args = SIZES . iter( ) . copied( ) . cartesian_product( PROBABILITIES . iter( ) . copied( ) ) ) ]
6567fn out_scalar ( bencher : divan:: Bencher , ( size, probability) : ( usize , f64 ) ) {
66- let mask = create_random_mask ( size, probability) ;
68+ let mask = divan:: black_box ( create_random_mask ( size, probability) ) ;
69+ let src = ( 0 ..size as i32 ) . collect :: < Vec < _ > > ( ) ;
6770 bencher
6871 . with_inputs ( || {
69- let src = ( 0 ..size as i32 ) . collect :: < Vec < _ > > ( ) ;
7072 let dest = vec ! [ 0i32 ; size] ;
71- ( src, dest)
73+ ( src. clone ( ) , dest, & mask )
7274 } )
73- . bench_refs ( |( src, dest) | filter_into_scalar ( src, dest, & mask) )
75+ . bench_refs ( |( src, dest, mask ) | filter_into_scalar ( src, dest, mask) )
7476}
7577
7678#[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
7779#[ divan:: bench( sample_size = SAMPLE_SIZE , args = SIZES . iter( ) . copied( ) . cartesian_product( PROBABILITIES . iter( ) . copied( ) ) ) ]
7880fn out_avx512 ( bencher : divan:: Bencher , ( size, probability) : ( usize , f64 ) ) {
79- let mask = create_random_mask ( size, probability) ;
81+ let mask = divan:: black_box ( create_random_mask ( size, probability) ) ;
82+ let src = ( 0 ..size as i32 ) . collect :: < Vec < _ > > ( ) ;
8083 bencher
8184 . with_inputs ( || {
82- let src = ( 0 ..size as i32 ) . collect :: < Vec < _ > > ( ) ;
8385 let dest = vec ! [ 0i32 ; size] ;
84- ( src, dest)
86+ ( src. clone ( ) , dest, & mask )
8587 } )
86- . bench_refs ( |( src, dest) | unsafe { filter_into_avx512 ( src, dest, & mask) } )
88+ . bench_refs ( |( src, dest, mask ) | unsafe { filter_into_avx512 ( src, dest, mask) } )
8789}
0 commit comments