File tree 4 files changed +66
-57
lines changed
4 files changed +66
-57
lines changed Original file line number Diff line number Diff line change 6
6
script : |
7
7
cargo build --verbose &&
8
8
cargo test --verbose &&
9
- ([ $TRAVIS_RUST_VERSION != nightly ] || cargo test --verbose --features benchmarks) &&
10
- ([ $TRAVIS_RUST_VERSION != nightly ] || cargo bench --verbose --features benchmarks bench)
9
+ ([ $TRAVIS_RUST_VERSION != nightly ] || cargo bench --verbose bench)
11
10
notifications :
12
11
webhooks : http://build.servo.org:54856/travis
Original file line number Diff line number Diff line change @@ -13,6 +13,3 @@ documentation = "http://doc.servo.org/smallvec/"
13
13
name = " smallvec"
14
14
path = " lib.rs"
15
15
doctest = false
16
-
17
- [features ]
18
- benchmarks = []
Original file line number Diff line number Diff line change
1
+ #![ feature( test) ]
2
+
3
+ extern crate smallvec;
4
+ extern crate test;
5
+
6
+ use smallvec:: SmallVec ;
7
+ use self :: test:: Bencher ;
8
+
9
+ #[ bench]
10
+ fn bench_push ( b : & mut Bencher ) {
11
+ #[ inline( never) ]
12
+ fn push_noinline ( vec : & mut SmallVec < [ u64 ; 16 ] > , x : u64 ) {
13
+ vec. push ( x)
14
+ }
15
+
16
+ b. iter ( || {
17
+ let mut vec: SmallVec < [ u64 ; 16 ] > = SmallVec :: new ( ) ;
18
+ for x in 0 ..100 {
19
+ push_noinline ( & mut vec, x) ;
20
+ }
21
+ vec
22
+ } ) ;
23
+ }
24
+
25
+ #[ bench]
26
+ fn bench_insert ( b : & mut Bencher ) {
27
+ #[ inline( never) ]
28
+ fn insert_noinline ( vec : & mut SmallVec < [ u64 ; 16 ] > , x : u64 ) {
29
+ vec. insert ( 0 , x)
30
+ }
31
+
32
+ b. iter ( || {
33
+ let mut vec: SmallVec < [ u64 ; 16 ] > = SmallVec :: new ( ) ;
34
+ for x in 0 ..100 {
35
+ insert_noinline ( & mut vec, x) ;
36
+ }
37
+ vec
38
+ } ) ;
39
+ }
40
+
41
+ #[ bench]
42
+ fn bench_extend ( b : & mut Bencher ) {
43
+ b. iter ( || {
44
+ let mut vec: SmallVec < [ u64 ; 16 ] > = SmallVec :: new ( ) ;
45
+ vec. extend ( 0 ..100 ) ;
46
+ vec
47
+ } ) ;
48
+ }
49
+
50
+ #[ bench]
51
+ fn bench_pushpop ( b : & mut Bencher ) {
52
+ #[ inline( never) ]
53
+ fn pushpop_noinline ( vec : & mut SmallVec < [ u64 ; 16 ] > , x : u64 ) {
54
+ vec. push ( x) ;
55
+ vec. pop ( ) ;
56
+ }
57
+
58
+ b. iter ( || {
59
+ let mut vec: SmallVec < [ u64 ; 16 ] > = SmallVec :: new ( ) ;
60
+ for x in 0 ..100 {
61
+ pushpop_noinline ( & mut vec, x) ;
62
+ }
63
+ vec
64
+ } ) ;
65
+ }
Original file line number Diff line number Diff line change 5
5
//! Small vectors in various sizes. These store a certain number of elements inline and fall back
6
6
//! to the heap for larger allocations.
7
7
8
- #![ cfg_attr( feature = "benchmarks" , feature( test) ) ]
9
-
10
8
use std:: borrow:: { Borrow , BorrowMut } ;
11
9
use std:: cmp;
12
10
use std:: fmt;
@@ -1010,53 +1008,3 @@ pub mod tests {
1010
1008
assert_eq ! ( vec. drain( ) . len( ) , 3 ) ;
1011
1009
}
1012
1010
}
1013
-
1014
- #[ cfg( all( feature = "benchmarks" , test) ) ]
1015
- mod bench {
1016
- extern crate test;
1017
- use SmallVec ;
1018
- use self :: test:: Bencher ;
1019
-
1020
- #[ bench]
1021
- fn bench_push ( b : & mut Bencher ) {
1022
- b. iter ( || {
1023
- let mut vec: SmallVec < [ u64 ; 16 ] > = SmallVec :: new ( ) ;
1024
- for x in 0 ..100 {
1025
- vec. push ( x) ;
1026
- }
1027
- vec
1028
- } ) ;
1029
- }
1030
-
1031
- #[ bench]
1032
- fn bench_insert ( b : & mut Bencher ) {
1033
- b. iter ( || {
1034
- let mut vec: SmallVec < [ u64 ; 16 ] > = SmallVec :: new ( ) ;
1035
- for x in 0 ..100 {
1036
- vec. insert ( 0 , x) ;
1037
- }
1038
- vec
1039
- } ) ;
1040
- }
1041
-
1042
- #[ bench]
1043
- fn bench_extend ( b : & mut Bencher ) {
1044
- b. iter ( || {
1045
- let mut vec: SmallVec < [ u64 ; 16 ] > = SmallVec :: new ( ) ;
1046
- vec. extend ( 0 ..100 ) ;
1047
- vec
1048
- } ) ;
1049
- }
1050
-
1051
- #[ bench]
1052
- fn bench_pushpop ( b : & mut Bencher ) {
1053
- b. iter ( || {
1054
- let mut vec: SmallVec < [ u64 ; 16 ] > = SmallVec :: new ( ) ;
1055
- for x in 0 ..100 {
1056
- vec. push ( x) ;
1057
- vec. pop ( ) ;
1058
- }
1059
- vec
1060
- } ) ;
1061
- }
1062
- }
You can’t perform that action at this time.
0 commit comments