1
1
#![ feature( test) ]
2
2
extern crate test;
3
3
4
- use algo:: sort;
5
- use algo:: sort:: util;
6
4
use algo:: strings:: Quick3Way ;
5
+ use algo:: { common, sort} ;
7
6
use test:: Bencher ;
8
7
8
+ static DATA_LEN : usize = 1000 ;
9
+
9
10
#[ bench]
10
11
fn small_merge_v1 ( b : & mut Bencher ) {
11
12
b. iter ( || {
@@ -16,7 +17,7 @@ fn small_merge_v1(b: &mut Bencher) {
16
17
17
18
#[ bench]
18
19
fn large_merge_v1 ( b : & mut Bencher ) {
19
- let data = util :: random_data ( util :: DATA_LEN ) ;
20
+ let data = gen_random_data ( DATA_LEN ) ;
20
21
b. iter ( || {
21
22
let mut numbs = data. clone ( ) ;
22
23
sort:: merge:: v1:: sort ( & mut numbs) ;
@@ -25,7 +26,7 @@ fn large_merge_v1(b: &mut Bencher) {
25
26
26
27
#[ bench]
27
28
fn large_sorted_asc_merge_v1 ( b : & mut Bencher ) {
28
- let data = util :: sorted_data_asc ( util :: DATA_LEN ) ;
29
+ let data = gen_asc_data ( DATA_LEN ) ;
29
30
b. iter ( || {
30
31
let mut numbs = data. clone ( ) ;
31
32
sort:: merge:: v1:: sort ( & mut numbs) ;
@@ -34,7 +35,7 @@ fn large_sorted_asc_merge_v1(b: &mut Bencher) {
34
35
35
36
#[ bench]
36
37
fn large_sorted_desc_merge_v1 ( b : & mut Bencher ) {
37
- let data = util :: sorted_data_desc ( util :: DATA_LEN ) ;
38
+ let data = gen_desc_data ( DATA_LEN ) ;
38
39
b. iter ( || {
39
40
let mut numbs = data. clone ( ) ;
40
41
sort:: merge:: v1:: sort ( & mut numbs) ;
@@ -43,7 +44,7 @@ fn large_sorted_desc_merge_v1(b: &mut Bencher) {
43
44
44
45
#[ bench]
45
46
fn eq_data_merge_v1 ( b : & mut Bencher ) {
46
- let data = util :: eq_data ( util :: DATA_LEN ) ;
47
+ let data = gen_eq_data ( DATA_LEN ) ;
47
48
b. iter ( || {
48
49
let mut numbs = data. clone ( ) ;
49
50
sort:: merge:: v1:: sort ( & mut numbs) ;
@@ -60,7 +61,7 @@ fn small_merge_v2(b: &mut Bencher) {
60
61
61
62
#[ bench]
62
63
fn large_merge_v2 ( b : & mut Bencher ) {
63
- let data = util :: random_data ( util :: DATA_LEN ) ;
64
+ let data = gen_random_data ( DATA_LEN ) ;
64
65
b. iter ( || {
65
66
let mut numbs = data. clone ( ) ;
66
67
sort:: merge:: v2:: sort ( & mut numbs) ;
@@ -69,7 +70,7 @@ fn large_merge_v2(b: &mut Bencher) {
69
70
70
71
#[ bench]
71
72
fn large_sorted_asc_merge_v2 ( b : & mut Bencher ) {
72
- let data = util :: sorted_data_asc ( util :: DATA_LEN ) ;
73
+ let data = gen_asc_data ( DATA_LEN ) ;
73
74
b. iter ( || {
74
75
let mut numbs = data. clone ( ) ;
75
76
sort:: merge:: v2:: sort ( & mut numbs) ;
@@ -78,7 +79,7 @@ fn large_sorted_asc_merge_v2(b: &mut Bencher) {
78
79
79
80
#[ bench]
80
81
fn large_sorted_desc_merge_v2 ( b : & mut Bencher ) {
81
- let data = util :: sorted_data_desc ( util :: DATA_LEN ) ;
82
+ let data = gen_desc_data ( DATA_LEN ) ;
82
83
b. iter ( || {
83
84
let mut numbs = data. clone ( ) ;
84
85
sort:: merge:: v2:: sort ( & mut numbs) ;
@@ -87,7 +88,7 @@ fn large_sorted_desc_merge_v2(b: &mut Bencher) {
87
88
88
89
#[ bench]
89
90
fn eq_data_merge_v2 ( b : & mut Bencher ) {
90
- let data = util :: eq_data ( util :: DATA_LEN ) ;
91
+ let data = gen_eq_data ( DATA_LEN ) ;
91
92
b. iter ( || {
92
93
let mut numbs = data. clone ( ) ;
93
94
sort:: merge:: v2:: sort ( & mut numbs) ;
@@ -104,7 +105,7 @@ fn small_merge_v3(b: &mut Bencher) {
104
105
105
106
#[ bench]
106
107
fn large_merge_v3 ( b : & mut Bencher ) {
107
- let data = util :: random_data ( util :: DATA_LEN ) ;
108
+ let data = gen_random_data ( DATA_LEN ) ;
108
109
b. iter ( || {
109
110
let mut numbs = data. clone ( ) ;
110
111
sort:: merge:: v3:: sort ( & mut numbs) ;
@@ -113,7 +114,7 @@ fn large_merge_v3(b: &mut Bencher) {
113
114
114
115
#[ bench]
115
116
fn large_sorted_asc_merge_v3 ( b : & mut Bencher ) {
116
- let data = util :: sorted_data_asc ( util :: DATA_LEN ) ;
117
+ let data = gen_asc_data ( DATA_LEN ) ;
117
118
b. iter ( || {
118
119
let mut numbs = data. clone ( ) ;
119
120
sort:: merge:: v3:: sort ( & mut numbs) ;
@@ -122,7 +123,7 @@ fn large_sorted_asc_merge_v3(b: &mut Bencher) {
122
123
123
124
#[ bench]
124
125
fn large_sorted_desc_merge_v3 ( b : & mut Bencher ) {
125
- let data = util :: sorted_data_desc ( util :: DATA_LEN ) ;
126
+ let data = gen_desc_data ( DATA_LEN ) ;
126
127
b. iter ( || {
127
128
let mut numbs = data. clone ( ) ;
128
129
sort:: merge:: v3:: sort ( & mut numbs) ;
@@ -131,7 +132,7 @@ fn large_sorted_desc_merge_v3(b: &mut Bencher) {
131
132
132
133
#[ bench]
133
134
fn eq_data_merge_v3 ( b : & mut Bencher ) {
134
- let data = util :: eq_data ( util :: DATA_LEN ) ;
135
+ let data = gen_eq_data ( DATA_LEN ) ;
135
136
b. iter ( || {
136
137
let mut numbs = data. clone ( ) ;
137
138
sort:: merge:: v3:: sort ( & mut numbs) ;
@@ -148,7 +149,7 @@ fn small_quick(b: &mut Bencher) {
148
149
149
150
#[ bench]
150
151
fn large_quick ( b : & mut Bencher ) {
151
- let data = util :: random_data ( util :: DATA_LEN ) ;
152
+ let data = gen_random_data ( DATA_LEN ) ;
152
153
b. iter ( || {
153
154
let mut numbs = data. clone ( ) ;
154
155
sort:: quick:: sort ( & mut numbs) ;
@@ -157,7 +158,7 @@ fn large_quick(b: &mut Bencher) {
157
158
158
159
#[ bench]
159
160
fn large_quick_3way ( b : & mut Bencher ) {
160
- let data = util :: random_data ( util :: DATA_LEN ) ;
161
+ let data = gen_random_data ( DATA_LEN ) ;
161
162
b. iter ( || {
162
163
let mut numbs = data. clone ( ) ;
163
164
Quick3Way :: sort ( & mut numbs) ;
@@ -166,7 +167,7 @@ fn large_quick_3way(b: &mut Bencher) {
166
167
167
168
#[ bench]
168
169
fn large_sorted_asc_quick ( b : & mut Bencher ) {
169
- let data = util :: sorted_data_asc ( util :: DATA_LEN ) ;
170
+ let data = gen_asc_data ( DATA_LEN ) ;
170
171
b. iter ( || {
171
172
let mut numbs = data. clone ( ) ;
172
173
sort:: quick:: sort ( & mut numbs) ;
@@ -175,7 +176,7 @@ fn large_sorted_asc_quick(b: &mut Bencher) {
175
176
176
177
#[ bench]
177
178
fn large_sorted_desc_quick ( b : & mut Bencher ) {
178
- let data = util :: sorted_data_desc ( util :: DATA_LEN ) ;
179
+ let data = gen_desc_data ( DATA_LEN ) ;
179
180
b. iter ( || {
180
181
let mut numbs = data. clone ( ) ;
181
182
sort:: quick:: sort ( & mut numbs) ;
@@ -184,7 +185,7 @@ fn large_sorted_desc_quick(b: &mut Bencher) {
184
185
185
186
#[ bench]
186
187
fn eq_data_quick ( b : & mut Bencher ) {
187
- let data = util :: eq_data ( util :: DATA_LEN ) ;
188
+ let data = gen_eq_data ( DATA_LEN ) ;
188
189
b. iter ( || {
189
190
let mut numbs = data. clone ( ) ;
190
191
sort:: quick:: sort ( & mut numbs) ;
@@ -209,7 +210,7 @@ fn small_selection_tree_selection(b: &mut Bencher) {
209
210
210
211
#[ bench]
211
212
fn large_selection_sort ( b : & mut Bencher ) {
212
- let data = util :: random_data ( util :: DATA_LEN ) ;
213
+ let data = gen_random_data ( DATA_LEN ) ;
213
214
b. iter ( || {
214
215
let mut numbs = data. clone ( ) ;
215
216
sort:: selection:: sort ( & mut numbs) ;
@@ -218,9 +219,31 @@ fn large_selection_sort(b: &mut Bencher) {
218
219
219
220
#[ bench]
220
221
fn large_selection_tree_selection ( b : & mut Bencher ) {
221
- let data = util :: random_data ( util :: DATA_LEN ) ;
222
+ let data = gen_random_data ( DATA_LEN ) ;
222
223
b. iter ( || {
223
224
let numbs = data. clone ( ) ;
224
225
sort:: tree_selection:: sort_desc ( & numbs) ;
225
226
} ) ;
226
227
}
228
+
229
+ // utils
230
+
231
+ fn gen_random_data ( len : usize ) -> Vec < i32 > {
232
+ let mut data: Vec < i32 > = ( 0 ..len as i32 ) . collect ( ) ;
233
+ common:: util:: shuffle ( & mut data) ;
234
+ data
235
+ }
236
+
237
+ pub fn gen_asc_data ( len : usize ) -> Vec < i32 > {
238
+ ( 0 ..len as i32 ) . collect ( )
239
+ }
240
+
241
+ pub fn gen_desc_data ( len : usize ) -> Vec < i32 > {
242
+ let mut data = gen_asc_data ( len) ;
243
+ data. reverse ( ) ;
244
+ data
245
+ }
246
+
247
+ pub fn gen_eq_data ( len : usize ) -> Vec < i32 > {
248
+ vec ! [ 100 ; len]
249
+ }
0 commit comments