From c94bf8bb680e0d6281822d289587d669e9374372 Mon Sep 17 00:00:00 2001 From: Vinzent Steinberg Date: Wed, 20 Aug 2014 23:36:07 -0400 Subject: [PATCH 1/3] bitv: make benchmarks always return a value This makes sure that the benchmarked code does not get optimized away. Also fixed a typo. Fixes #12118. --- src/libcollections/bitv.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/libcollections/bitv.rs b/src/libcollections/bitv.rs index b028ac0bbd7..cb4e3c82be5 100644 --- a/src/libcollections/bitv.rs +++ b/src/libcollections/bitv.rs @@ -2616,18 +2616,19 @@ mod tests { let mut b1 = Bitv::with_capacity(BENCH_BITS, false); let b2 = Bitv::with_capacity(BENCH_BITS, false); b.iter(|| { - b1.union(&b2); + b1.union(&b2) }) } #[bench] - fn bench_btv_small_iter(b: &mut Bencher) { + fn bench_bitv_small_iter(b: &mut Bencher) { let bitv = Bitv::with_capacity(uint::BITS, false); b.iter(|| { - let mut _sum = 0; + let mut sum = 0; for pres in bitv.iter() { - _sum += pres as uint; + sum += pres as uint; } + sum }) } @@ -2635,10 +2636,11 @@ mod tests { fn bench_bitv_big_iter(b: &mut Bencher) { let bitv = Bitv::with_capacity(BENCH_BITS, false); b.iter(|| { - let mut _sum = 0; + let mut sum = 0; for pres in bitv.iter() { - _sum += pres as uint; + sum += pres as uint; } + sum }) } @@ -2647,10 +2649,11 @@ mod tests { let bitv = BitvSet::from_bitv(from_fn(BENCH_BITS, |idx| {idx % 3 == 0})); b.iter(|| { - let mut _sum = 0; + let mut sum = 0; for idx in bitv.iter() { - _sum += idx; + sum += idx; } + sum }) } } From 4d41a4227c82178db4b29d2bcde1dab8b5fd5285 Mon Sep 17 00:00:00 2001 From: Vinzent Steinberg Date: Wed, 20 Aug 2014 23:41:02 -0400 Subject: [PATCH 2/3] arena: fix a typo --- src/libarena/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libarena/lib.rs b/src/libarena/lib.rs index c2f4ef3ac30..f212cdd4638 100644 --- a/src/libarena/lib.rs +++ b/src/libarena/lib.rs @@ -563,7 +563,7 @@ mod tests { struct Noncopy { string: String, - array: Vec , + array: Vec, } #[test] From da5e8cef598cf47461cfe1bfe918ff7fbc0d92c4 Mon Sep 17 00:00:00 2001 From: Vinzent Steinberg Date: Thu, 21 Aug 2014 10:02:55 -0400 Subject: [PATCH 3/3] bitv: make sure benchmarks run long enough Previously they were too short (less than 10 ns), so the benchmarker could not resolve them meaningfully. Now they should run in the order of 100 ns. --- src/libcollections/bitv.rs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/libcollections/bitv.rs b/src/libcollections/bitv.rs index cb4e3c82be5..10ebcbcab36 100644 --- a/src/libcollections/bitv.rs +++ b/src/libcollections/bitv.rs @@ -2566,7 +2566,9 @@ mod tests { let mut r = rng(); let mut bitv = 0 as uint; b.iter(|| { - bitv |= 1 << ((r.next_u32() as uint) % uint::BITS); + for _ in range(0u, 100) { + bitv |= 1 << ((r.next_u32() as uint) % uint::BITS); + } &bitv }) } @@ -2576,7 +2578,9 @@ mod tests { let mut r = rng(); let mut bitv = Bitv::with_capacity(BENCH_BITS, false); b.iter(|| { - bitv.set((r.next_u32() as uint) % BENCH_BITS, true); + for _ in range(0u, 100) { + bitv.set((r.next_u32() as uint) % BENCH_BITS, true); + } &bitv }) } @@ -2586,7 +2590,9 @@ mod tests { let mut r = rng(); let mut bitv = Bitv::with_capacity(uint::BITS, false); b.iter(|| { - bitv.set((r.next_u32() as uint) % uint::BITS, true); + for _ in range(0u, 100) { + bitv.set((r.next_u32() as uint) % uint::BITS, true); + } &bitv }) } @@ -2596,7 +2602,9 @@ mod tests { let mut r = rng(); let mut bitv = BitvSet::new(); b.iter(|| { - bitv.insert((r.next_u32() as uint) % uint::BITS); + for _ in range(0u, 100) { + bitv.insert((r.next_u32() as uint) % uint::BITS); + } &bitv }) } @@ -2606,7 +2614,9 @@ mod tests { let mut r = rng(); let mut bitv = BitvSet::new(); b.iter(|| { - bitv.insert((r.next_u32() as uint) % BENCH_BITS); + for _ in range(0u, 100) { + bitv.insert((r.next_u32() as uint) % BENCH_BITS); + } &bitv }) } @@ -2625,8 +2635,10 @@ mod tests { let bitv = Bitv::with_capacity(uint::BITS, false); b.iter(|| { let mut sum = 0; - for pres in bitv.iter() { - sum += pres as uint; + for _ in range(0u, 10) { + for pres in bitv.iter() { + sum += pres as uint; + } } sum })