为什么较大数组的总和需要较少的时间

时间:2016-11-24 16:30:47

标签: rust

在具有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)

进行测试

0 个答案:

没有答案