1
1
use criterion:: { black_box, criterion_group, criterion_main, Criterion } ;
2
- use itertools:: Itertools ;
3
2
use itertools:: free:: cloned;
4
3
use itertools:: iproduct;
4
+ use itertools:: Itertools ;
5
5
6
- use std:: iter:: repeat;
7
6
use std:: cmp;
7
+ use std:: iter:: repeat;
8
8
use std:: ops:: { Add , Range } ;
9
9
10
10
mod extra;
@@ -15,8 +15,10 @@ fn slice_iter(c: &mut Criterion) {
15
15
let xs: Vec < _ > = repeat ( 1i32 ) . take ( 20 ) . collect ( ) ;
16
16
17
17
c. bench_function ( "slice iter" , move |b| {
18
- b. iter ( || for elt in xs. iter ( ) {
19
- black_box ( elt) ;
18
+ b. iter ( || {
19
+ for elt in xs. iter ( ) {
20
+ black_box ( elt) ;
21
+ }
20
22
} )
21
23
} ) ;
22
24
}
@@ -25,8 +27,10 @@ fn slice_iter_rev(c: &mut Criterion) {
25
27
let xs: Vec < _ > = repeat ( 1i32 ) . take ( 20 ) . collect ( ) ;
26
28
27
29
c. bench_function ( "slice iter rev" , move |b| {
28
- b. iter ( || for elt in xs. iter ( ) . rev ( ) {
29
- black_box ( elt) ;
30
+ b. iter ( || {
31
+ for elt in xs. iter ( ) . rev ( ) {
32
+ black_box ( elt) ;
33
+ }
30
34
} )
31
35
} ) ;
32
36
}
@@ -307,10 +311,10 @@ fn zip_unchecked_counted_loop(c: &mut Criterion) {
307
311
let len = cmp:: min ( xs. len ( ) , ys. len ( ) ) ;
308
312
for i in 0 ..len {
309
313
unsafe {
310
- let x = * xs. get_unchecked ( i) ;
311
- let y = * ys. get_unchecked ( i) ;
312
- black_box ( x) ;
313
- black_box ( y) ;
314
+ let x = * xs. get_unchecked ( i) ;
315
+ let y = * ys. get_unchecked ( i) ;
316
+ black_box ( x) ;
317
+ black_box ( y) ;
314
318
}
315
319
}
316
320
} )
@@ -329,9 +333,9 @@ fn zipdot_i32_unchecked_counted_loop(c: &mut Criterion) {
329
333
let mut s = 0i32 ;
330
334
for i in 0 ..len {
331
335
unsafe {
332
- let x = * xs. get_unchecked ( i) ;
333
- let y = * ys. get_unchecked ( i) ;
334
- s += x * y;
336
+ let x = * xs. get_unchecked ( i) ;
337
+ let y = * ys. get_unchecked ( i) ;
338
+ s += x * y;
335
339
}
336
340
}
337
341
s
@@ -351,9 +355,9 @@ fn zipdot_f32_unchecked_counted_loop(c: &mut Criterion) {
351
355
let mut s = 0f32 ;
352
356
for i in 0 ..len {
353
357
unsafe {
354
- let x = * xs. get_unchecked ( i) ;
355
- let y = * ys. get_unchecked ( i) ;
356
- s += x * y;
358
+ let x = * xs. get_unchecked ( i) ;
359
+ let y = * ys. get_unchecked ( i) ;
360
+ s += x * y;
357
361
}
358
362
}
359
363
s
@@ -374,12 +378,12 @@ fn zip_unchecked_counted_loop3(c: &mut Criterion) {
374
378
let len = cmp:: min ( xs. len ( ) , cmp:: min ( ys. len ( ) , zs. len ( ) ) ) ;
375
379
for i in 0 ..len {
376
380
unsafe {
377
- let x = * xs. get_unchecked ( i) ;
378
- let y = * ys. get_unchecked ( i) ;
379
- let z = * zs. get_unchecked ( i) ;
380
- black_box ( x) ;
381
- black_box ( y) ;
382
- black_box ( z) ;
381
+ let x = * xs. get_unchecked ( i) ;
382
+ let y = * ys. get_unchecked ( i) ;
383
+ let z = * zs. get_unchecked ( i) ;
384
+ black_box ( x) ;
385
+ black_box ( y) ;
386
+ black_box ( z) ;
383
387
}
384
388
}
385
389
} )
@@ -464,11 +468,7 @@ fn equal(c: &mut Criterion) {
464
468
let alpha = black_box ( & data[ 1 ..] ) ;
465
469
let beta = black_box ( & data[ ..l - 1 ] ) ;
466
470
467
- c. bench_function ( "equal" , move |b| {
468
- b. iter ( || {
469
- itertools:: equal ( alpha, beta)
470
- } )
471
- } ) ;
471
+ c. bench_function ( "equal" , move |b| b. iter ( || itertools:: equal ( alpha, beta) ) ) ;
472
472
}
473
473
474
474
fn merge_default ( c : & mut Criterion ) {
@@ -493,9 +493,7 @@ fn merge_default(c: &mut Criterion) {
493
493
let data2 = black_box ( data2) ;
494
494
495
495
c. bench_function ( "merge default" , move |b| {
496
- b. iter ( || {
497
- data1. iter ( ) . merge ( & data2) . count ( )
498
- } )
496
+ b. iter ( || data1. iter ( ) . merge ( & data2) . count ( ) )
499
497
} ) ;
500
498
}
501
499
@@ -521,9 +519,7 @@ fn merge_by_cmp(c: &mut Criterion) {
521
519
let data2 = black_box ( data2) ;
522
520
523
521
c. bench_function ( "merge by cmp" , move |b| {
524
- b. iter ( || {
525
- data1. iter ( ) . merge_by ( & data2, PartialOrd :: le) . count ( )
526
- } )
522
+ b. iter ( || data1. iter ( ) . merge_by ( & data2, PartialOrd :: le) . count ( ) )
527
523
} ) ;
528
524
}
529
525
@@ -549,9 +545,7 @@ fn merge_by_lt(c: &mut Criterion) {
549
545
let data2 = black_box ( data2) ;
550
546
551
547
c. bench_function ( "merge by lt" , move |b| {
552
- b. iter ( || {
553
- data1. iter ( ) . merge_by ( & data2, |a, b| a <= b) . count ( )
554
- } )
548
+ b. iter ( || data1. iter ( ) . merge_by ( & data2, |a, b| a <= b) . count ( ) )
555
549
} ) ;
556
550
}
557
551
@@ -578,9 +572,7 @@ fn kmerge_default(c: &mut Criterion) {
578
572
let its = & [ data1. iter ( ) , data2. iter ( ) ] ;
579
573
580
574
c. bench_function ( "kmerge default" , move |b| {
581
- b. iter ( || {
582
- its. iter ( ) . cloned ( ) . kmerge ( ) . count ( )
583
- } )
575
+ b. iter ( || its. iter ( ) . cloned ( ) . kmerge ( ) . count ( ) )
584
576
} ) ;
585
577
}
586
578
@@ -603,7 +595,7 @@ fn kmerge_tenway(c: &mut Criterion) {
603
595
while rest. len ( ) > 0 {
604
596
let chunk_len = 1 + rng ( & mut state) % 512 ;
605
597
let chunk_len = cmp:: min ( rest. len ( ) , chunk_len as usize ) ;
606
- let ( fst, tail) = { rest} . split_at_mut ( chunk_len) ;
598
+ let ( fst, tail) = { rest } . split_at_mut ( chunk_len) ;
607
599
fst. sort ( ) ;
608
600
chunks. push ( fst. iter ( ) . cloned ( ) ) ;
609
601
rest = tail;
@@ -612,15 +604,14 @@ fn kmerge_tenway(c: &mut Criterion) {
612
604
// println!("Chunk lengths: {}", chunks.iter().format_with(", ", |elt, f| f(&elt.len())));
613
605
614
606
c. bench_function ( "kmerge tenway" , move |b| {
615
- b. iter ( || {
616
- chunks. iter ( ) . cloned ( ) . kmerge ( ) . count ( )
617
- } )
607
+ b. iter ( || chunks. iter ( ) . cloned ( ) . kmerge ( ) . count ( ) )
618
608
} ) ;
619
609
}
620
610
621
611
fn fast_integer_sum < I > ( iter : I ) -> I :: Item
622
- where I : IntoIterator ,
623
- I :: Item : Default + Add < Output =I :: Item >
612
+ where
613
+ I : IntoIterator ,
614
+ I :: Item : Default + Add < Output = I :: Item > ,
624
615
{
625
616
iter. into_iter ( ) . fold ( <_ >:: default ( ) , |x, y| x + y)
626
617
}
@@ -629,39 +620,31 @@ fn step_vec_2(c: &mut Criterion) {
629
620
let v = vec ! [ 0 ; 1024 ] ;
630
621
631
622
c. bench_function ( "step vec 2" , move |b| {
632
- b. iter ( || {
633
- fast_integer_sum ( cloned ( v. iter ( ) . step_by ( 2 ) ) )
634
- } )
623
+ b. iter ( || fast_integer_sum ( cloned ( v. iter ( ) . step_by ( 2 ) ) ) )
635
624
} ) ;
636
625
}
637
626
638
627
fn step_vec_10 ( c : & mut Criterion ) {
639
628
let v = vec ! [ 0 ; 1024 ] ;
640
629
641
630
c. bench_function ( "step vec 10" , move |b| {
642
- b. iter ( || {
643
- fast_integer_sum ( cloned ( v. iter ( ) . step_by ( 10 ) ) )
644
- } )
631
+ b. iter ( || fast_integer_sum ( cloned ( v. iter ( ) . step_by ( 10 ) ) ) )
645
632
} ) ;
646
633
}
647
634
648
635
fn step_range_2 ( c : & mut Criterion ) {
649
636
let v = black_box ( 0 ..1024 ) ;
650
637
651
638
c. bench_function ( "step range 2" , move |b| {
652
- b. iter ( || {
653
- fast_integer_sum ( v. clone ( ) . step_by ( 2 ) )
654
- } )
639
+ b. iter ( || fast_integer_sum ( v. clone ( ) . step_by ( 2 ) ) )
655
640
} ) ;
656
641
}
657
642
658
643
fn step_range_10 ( c : & mut Criterion ) {
659
644
let v = black_box ( 0 ..1024 ) ;
660
645
661
646
c. bench_function ( "step range 10" , move |b| {
662
- b. iter ( || {
663
- fast_integer_sum ( v. clone ( ) . step_by ( 10 ) )
664
- } )
647
+ b. iter ( || fast_integer_sum ( v. clone ( ) . step_by ( 10 ) ) )
665
648
} ) ;
666
649
}
667
650
@@ -753,9 +736,7 @@ fn all_equal(c: &mut Criterion) {
753
736
let mut xs = vec ! [ 0 ; 5_000_000 ] ;
754
737
xs. extend ( vec ! [ 1 ; 5_000_000 ] ) ;
755
738
756
- c. bench_function ( "all equal" , move |b| {
757
- b. iter ( || xs. iter ( ) . all_equal ( ) )
758
- } ) ;
739
+ c. bench_function ( "all equal" , move |b| b. iter ( || xs. iter ( ) . all_equal ( ) ) ) ;
759
740
}
760
741
761
742
fn all_equal_for ( c : & mut Criterion ) {
@@ -797,33 +778,25 @@ fn permutations_iter(c: &mut Criterion) {
797
778
}
798
779
799
780
c. bench_function ( "permutations iter" , move |b| {
800
- b. iter ( || {
801
- for _ in NewIterator ( 0 .. PERM_COUNT ) . permutations ( PERM_COUNT ) {
802
-
803
- }
804
- } )
781
+ b. iter (
782
+ || {
783
+ for _ in NewIterator ( 0 .. PERM_COUNT ) . permutations ( PERM_COUNT ) { }
784
+ } ,
785
+ )
805
786
} ) ;
806
787
}
807
788
808
789
fn permutations_range ( c : & mut Criterion ) {
809
790
c. bench_function ( "permutations range" , move |b| {
810
- b. iter ( || {
811
- for _ in ( 0 ..PERM_COUNT ) . permutations ( PERM_COUNT ) {
812
-
813
- }
814
- } )
791
+ b. iter ( || for _ in ( 0 ..PERM_COUNT ) . permutations ( PERM_COUNT ) { } )
815
792
} ) ;
816
793
}
817
794
818
795
fn permutations_slice ( c : & mut Criterion ) {
819
796
let v = ( 0 ..PERM_COUNT ) . collect_vec ( ) ;
820
797
821
798
c. bench_function ( "permutations slice" , move |b| {
822
- b. iter ( || {
823
- for _ in v. as_slice ( ) . iter ( ) . permutations ( PERM_COUNT ) {
824
-
825
- }
826
- } )
799
+ b. iter ( || for _ in v. as_slice ( ) . iter ( ) . permutations ( PERM_COUNT ) { } )
827
800
} ) ;
828
801
}
829
802
0 commit comments