@@ -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,43 @@ 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_drop ( b : & mut Bencher ) {
62+ b. iter ( || pos ( BUILD_SET_SIZE ) )
63+ }
64+
65+ #[ bench]
66+ pub fn build_and_into_iter ( b : & mut Bencher ) {
67+ b. iter ( || pos ( BUILD_SET_SIZE ) . into_iter ( ) . count ( ) )
68+ }
69+
70+ #[ bench]
71+ pub fn build_and_pop_all ( b : & mut Bencher ) {
72+ b. iter ( || {
73+ let mut s = pos ( BUILD_SET_SIZE ) ;
74+ while s. pop_first ( ) . is_some ( ) { }
75+ s
76+ } ) ;
77+ }
78+
79+ #[ bench]
80+ pub fn build_and_remove_all ( b : & mut Bencher ) {
81+ b. iter ( || {
82+ let mut s = pos ( BUILD_SET_SIZE ) ;
83+ while let Some ( elt) = s. iter ( ) . copied ( ) . next ( ) {
84+ s. remove ( & elt) ;
85+ }
86+ s
87+ } ) ;
88+ }
89+
5990set_bench ! { intersection_100_neg_vs_100_pos, intersection, count, [ neg( 100 ) , pos( 100 ) ] }
6091set_bench ! { intersection_100_neg_vs_10k_pos, intersection, count, [ neg( 100 ) , pos( 10_000 ) ] }
6192set_bench ! { intersection_100_pos_vs_100_neg, intersection, count, [ pos( 100 ) , neg( 100 ) ] }
0 commit comments