@@ -2209,78 +2209,141 @@ mod tests {
2209
2209
do_bench_clone ( b, 1000 )
2210
2210
}
2211
2211
2212
- fn do_bench_clone_from ( b : & mut Bencher , dst_len : uint , src_len : uint ) {
2212
+ fn do_bench_clone_from ( b : & mut Bencher , times : uint , dst_len : uint , src_len : uint ) {
2213
2213
let dst: Vec < uint > = FromIterator :: from_iter ( range ( 0 , src_len) ) ;
2214
2214
let src: Vec < uint > = FromIterator :: from_iter ( range ( dst_len, dst_len + src_len) ) ;
2215
2215
2216
- b. bytes = src_len as u64 ;
2216
+ b. bytes = ( times * src_len) as u64 ;
2217
2217
2218
2218
b. iter ( || {
2219
2219
let mut dst = dst. clone ( ) ;
2220
- let src = src. clone ( ) ;
2221
- dst. clone_from ( & src) ;
2222
- assert_eq ! ( dst. len( ) , src_len) ;
2223
- assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | dst_len + i == * x) ) ;
2220
+
2221
+ for _ in range ( 0 , times) {
2222
+ dst. clone_from ( & src) ;
2223
+
2224
+ assert_eq ! ( dst. len( ) , src_len) ;
2225
+ assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | dst_len + i == * x) ) ;
2226
+ }
2224
2227
} ) ;
2225
2228
}
2226
2229
2227
2230
#[ bench]
2228
- fn bench_clone_from_0000_0000 ( b : & mut Bencher ) {
2229
- do_bench_clone_from ( b, 0 , 0 )
2231
+ fn bench_clone_from_01_0000_0000 ( b : & mut Bencher ) {
2232
+ do_bench_clone_from ( b, 1 , 0 , 0 )
2233
+ }
2234
+
2235
+ #[ bench]
2236
+ fn bench_clone_from_01_0000_0010 ( b : & mut Bencher ) {
2237
+ do_bench_clone_from ( b, 1 , 0 , 10 )
2238
+ }
2239
+
2240
+ #[ bench]
2241
+ fn bench_clone_from_01_0000_0100 ( b : & mut Bencher ) {
2242
+ do_bench_clone_from ( b, 1 , 0 , 100 )
2243
+ }
2244
+
2245
+ #[ bench]
2246
+ fn bench_clone_from_01_0000_1000 ( b : & mut Bencher ) {
2247
+ do_bench_clone_from ( b, 1 , 0 , 1000 )
2248
+ }
2249
+
2250
+ #[ bench]
2251
+ fn bench_clone_from_01_0010_0010 ( b : & mut Bencher ) {
2252
+ do_bench_clone_from ( b, 1 , 10 , 10 )
2253
+ }
2254
+
2255
+ #[ bench]
2256
+ fn bench_clone_from_01_0100_0100 ( b : & mut Bencher ) {
2257
+ do_bench_clone_from ( b, 1 , 100 , 100 )
2258
+ }
2259
+
2260
+ #[ bench]
2261
+ fn bench_clone_from_01_1000_1000 ( b : & mut Bencher ) {
2262
+ do_bench_clone_from ( b, 1 , 1000 , 1000 )
2263
+ }
2264
+
2265
+ #[ bench]
2266
+ fn bench_clone_from_01_0010_0100 ( b : & mut Bencher ) {
2267
+ do_bench_clone_from ( b, 1 , 10 , 100 )
2268
+ }
2269
+
2270
+ #[ bench]
2271
+ fn bench_clone_from_01_0100_1000 ( b : & mut Bencher ) {
2272
+ do_bench_clone_from ( b, 1 , 100 , 1000 )
2273
+ }
2274
+
2275
+ #[ bench]
2276
+ fn bench_clone_from_01_0010_0000 ( b : & mut Bencher ) {
2277
+ do_bench_clone_from ( b, 1 , 10 , 0 )
2278
+ }
2279
+
2280
+ #[ bench]
2281
+ fn bench_clone_from_01_0100_0010 ( b : & mut Bencher ) {
2282
+ do_bench_clone_from ( b, 1 , 100 , 10 )
2283
+ }
2284
+
2285
+ #[ bench]
2286
+ fn bench_clone_from_01_1000_0100 ( b : & mut Bencher ) {
2287
+ do_bench_clone_from ( b, 1 , 1000 , 100 )
2288
+ }
2289
+
2290
+ #[ bench]
2291
+ fn bench_clone_from_10_0000_0000 ( b : & mut Bencher ) {
2292
+ do_bench_clone_from ( b, 10 , 0 , 0 )
2230
2293
}
2231
2294
2232
2295
#[ bench]
2233
- fn bench_clone_from_0000_0010 ( b : & mut Bencher ) {
2234
- do_bench_clone_from ( b, 0 , 10 )
2296
+ fn bench_clone_from_10_0000_0010 ( b : & mut Bencher ) {
2297
+ do_bench_clone_from ( b, 10 , 0 , 10 )
2235
2298
}
2236
2299
2237
2300
#[ bench]
2238
- fn bench_clone_from_0000_0100 ( b : & mut Bencher ) {
2239
- do_bench_clone_from ( b, 0 , 100 )
2301
+ fn bench_clone_from_10_0000_0100 ( b : & mut Bencher ) {
2302
+ do_bench_clone_from ( b, 10 , 0 , 100 )
2240
2303
}
2241
2304
2242
2305
#[ bench]
2243
- fn bench_clone_from_0000_1000 ( b : & mut Bencher ) {
2244
- do_bench_clone_from ( b, 0 , 1000 )
2306
+ fn bench_clone_from_10_0000_1000 ( b : & mut Bencher ) {
2307
+ do_bench_clone_from ( b, 10 , 0 , 1000 )
2245
2308
}
2246
2309
2247
2310
#[ bench]
2248
- fn bench_clone_from_0010_0010 ( b : & mut Bencher ) {
2249
- do_bench_clone_from ( b, 10 , 10 )
2311
+ fn bench_clone_from_10_0010_0010 ( b : & mut Bencher ) {
2312
+ do_bench_clone_from ( b, 10 , 10 , 10 )
2250
2313
}
2251
2314
2252
2315
#[ bench]
2253
- fn bench_clone_from_0100_0100 ( b : & mut Bencher ) {
2254
- do_bench_clone_from ( b, 100 , 100 )
2316
+ fn bench_clone_from_10_0100_0100 ( b : & mut Bencher ) {
2317
+ do_bench_clone_from ( b, 10 , 100 , 100 )
2255
2318
}
2256
2319
2257
2320
#[ bench]
2258
- fn bench_clone_from_1000_1000 ( b : & mut Bencher ) {
2259
- do_bench_clone_from ( b, 1000 , 1000 )
2321
+ fn bench_clone_from_10_1000_1000 ( b : & mut Bencher ) {
2322
+ do_bench_clone_from ( b, 10 , 1000 , 1000 )
2260
2323
}
2261
2324
2262
2325
#[ bench]
2263
- fn bench_clone_from_0010_0100 ( b : & mut Bencher ) {
2264
- do_bench_clone_from ( b, 10 , 100 )
2326
+ fn bench_clone_from_10_0010_0100 ( b : & mut Bencher ) {
2327
+ do_bench_clone_from ( b, 10 , 10 , 100 )
2265
2328
}
2266
2329
2267
2330
#[ bench]
2268
- fn bench_clone_from_0100_1000 ( b : & mut Bencher ) {
2269
- do_bench_clone_from ( b, 100 , 1000 )
2331
+ fn bench_clone_from_10_0100_1000 ( b : & mut Bencher ) {
2332
+ do_bench_clone_from ( b, 10 , 100 , 1000 )
2270
2333
}
2271
2334
2272
2335
#[ bench]
2273
- fn bench_clone_from_0010_0000 ( b : & mut Bencher ) {
2274
- do_bench_clone_from ( b, 10 , 0 )
2336
+ fn bench_clone_from_10_0010_0000 ( b : & mut Bencher ) {
2337
+ do_bench_clone_from ( b, 10 , 10 , 0 )
2275
2338
}
2276
2339
2277
2340
#[ bench]
2278
- fn bench_clone_from_0100_0010 ( b : & mut Bencher ) {
2279
- do_bench_clone_from ( b, 100 , 10 )
2341
+ fn bench_clone_from_10_0100_0010 ( b : & mut Bencher ) {
2342
+ do_bench_clone_from ( b, 10 , 100 , 10 )
2280
2343
}
2281
2344
2282
2345
#[ bench]
2283
- fn bench_clone_from_1000_0100 ( b : & mut Bencher ) {
2284
- do_bench_clone_from ( b, 1000 , 100 )
2346
+ fn bench_clone_from_10_1000_0100 ( b : & mut Bencher ) {
2347
+ do_bench_clone_from ( b, 10 , 1000 , 100 )
2285
2348
}
2286
2349
}
0 commit comments