@@ -2209,78 +2209,141 @@ mod tests {
22092209 do_bench_clone ( b, 1000 )
22102210 }
22112211
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 ) {
22132213 let dst: Vec < uint > = FromIterator :: from_iter ( range ( 0 , src_len) ) ;
22142214 let src: Vec < uint > = FromIterator :: from_iter ( range ( dst_len, dst_len + src_len) ) ;
22152215
2216- b. bytes = src_len as u64 ;
2216+ b. bytes = ( times * src_len) as u64 ;
22172217
22182218 b. iter ( || {
22192219 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+ }
22242227 } ) ;
22252228 }
22262229
22272230 #[ 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 )
22302293 }
22312294
22322295 #[ 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 )
22352298 }
22362299
22372300 #[ 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 )
22402303 }
22412304
22422305 #[ 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 )
22452308 }
22462309
22472310 #[ 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 )
22502313 }
22512314
22522315 #[ 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 )
22552318 }
22562319
22572320 #[ 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 )
22602323 }
22612324
22622325 #[ 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 )
22652328 }
22662329
22672330 #[ 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 )
22702333 }
22712334
22722335 #[ 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 )
22752338 }
22762339
22772340 #[ 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 )
22802343 }
22812344
22822345 #[ 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 )
22852348 }
22862349}
0 commit comments