@@ -14,19 +14,13 @@ fn random(n: usize) -> BTreeSet<usize> {
1414}
1515
1616fn neg ( n : usize ) -> BTreeSet < i32 > {
17- let mut set = BTreeSet :: new ( ) ;
18- for i in -( n as i32 ) ..=-1 {
19- set. insert ( i) ;
20- }
17+ let set: BTreeSet < i32 > = ( -( n as i32 ) ..=-1 ) . collect ( ) ;
2118 assert_eq ! ( set. len( ) , n) ;
2219 set
2320}
2421
2522fn pos ( n : usize ) -> BTreeSet < i32 > {
26- let mut set = BTreeSet :: new ( ) ;
27- for i in 1 ..=( n as i32 ) {
28- set. insert ( i) ;
29- }
23+ let set: BTreeSet < i32 > = ( 1 ..=( n as i32 ) ) . collect ( ) ;
3024 assert_eq ! ( set. len( ) , n) ;
3125 set
3226}
@@ -56,6 +50,54 @@ macro_rules! set_bench {
5650 } ;
5751}
5852
53+ const BUILD_SET_SIZE : usize = 100 ;
54+
55+ #[ bench]
56+ pub fn build_and_clear ( b : & mut Bencher ) {
57+ b. iter ( || pos ( BUILD_SET_SIZE ) . clear ( ) )
58+ }
59+
60+ #[ bench]
61+ pub fn build_and_drain ( b : & mut Bencher ) {
62+ b. iter ( || pos ( BUILD_SET_SIZE ) . drain ( ) . count ( ) )
63+ }
64+
65+ #[ bench]
66+ pub fn build_and_drop ( b : & mut Bencher ) {
67+ b. iter ( || pos ( BUILD_SET_SIZE ) )
68+ }
69+
70+ #[ bench]
71+ pub fn build_and_into_iter ( b : & mut Bencher ) {
72+ b. iter ( || pos ( BUILD_SET_SIZE ) . into_iter ( ) . count ( ) )
73+ }
74+
75+ #[ bench]
76+ pub fn build_and_pop_all ( b : & mut Bencher ) {
77+ b. iter ( || {
78+ let mut s = pos ( BUILD_SET_SIZE ) ;
79+ while s. pop_first ( ) . is_some ( ) {
80+ }
81+ s
82+ } ) ;
83+ }
84+
85+ #[ bench]
86+ pub fn build_and_remove_all ( b : & mut Bencher ) {
87+ b. iter ( || {
88+ let mut s = pos ( BUILD_SET_SIZE ) ;
89+ while let Some ( elt) = s. iter ( ) . copied ( ) . next ( ) {
90+ s. remove ( & elt) ;
91+ }
92+ s
93+ } ) ;
94+ }
95+
96+ #[ bench]
97+ pub fn build_and_retain_nothing ( b : & mut Bencher ) {
98+ b. iter ( || pos ( BUILD_SET_SIZE ) . retain ( |_| false ) )
99+ }
100+
59101set_bench ! { intersection_100_neg_vs_100_pos, intersection, count, [ neg( 100 ) , pos( 100 ) ] }
60102set_bench ! { intersection_100_neg_vs_10k_pos, intersection, count, [ neg( 100 ) , pos( 10_000 ) ] }
61103set_bench ! { intersection_100_pos_vs_100_neg, intersection, count, [ pos( 100 ) , neg( 100 ) ] }
0 commit comments