在具有100个元素的向量上运行sum
时,需要9ns才能完成,当使用10个元素运行时需要13ns。
使用以下代码进行演示
#![feature(test)]
extern crate test;
use test::{black_box, Bencher};
#[bench]
fn bench_10(b: &mut Bencher){
let set: Vec<u32> = (0..10u32).collect();
b.iter(|| {
let result: u32 = set.iter().sum();
black_box(result) // So the compile doesn't optimise out function
})
}
#[bench]
fn bench_100(b: &mut Bencher){
let set: Vec<u32> = (0..100u32).collect();
b.iter(|| {
let result: u32 = set.iter().sum();
black_box(result)
})
}
使用cargo bench
test sum::tests::bench_iter_10 ... bench: 13 ns/iter (+/- 1)
test sum::tests::bench_iter_100 ... bench: 9 ns/iter (+/- 1)
更多结果:
Elements | Time
10 | 14ns
12 | 14ns
50 | 10ns
80 | 11ns
90 | 12ns
100 | 9ns
110 | 14ns
120 | 13ns
150 | 16ns
10,000 | 913ns
这背后有什么理由,或者它只是每晚构建的预期?使用rustc 1.15.0-nightly (3bf2be9ce 2016-11-22)