集册 Rust 中文教程 评测 (benchmark)

评测 (benchmark)

—— 性能测试

欢马劈雪     最近更新时间:2020-08-04 05:37:59

175

单元测试是用来校验程序的正确性的,然而,程序能正常运行后,往往还需要测试程序(一部分)的执行速度,这时,f就需要用到性能测试。 通常来讲,所谓性能测试,指的是测量程序运行的速度,即运行一次要多少时间(通常是执行多次求平均值)。Rust 竟然连这个特性都集成在语言基础特性中,真的是一门很重视工程性的语言。

下面直接说明如何使用。

cargo new benchit
cd benchit

编辑 src/lib.rs 文件,在里面添加如下代码:

#![feature(test)]

extern crate test;

pub fn add_two(a: i32) -> i32 {
    a + 2
}

#[cfg(test)]
mod tests {
    use super::*;
    use test::Bencher;

    #[test]
    fn it_works() {
        assert_eq!(4, add_two(2));
    }

    #[bench]
    fn bench_add_two(b: &mut Bencher) {
        b.iter(|| add_two(2));
    }
}

注意:

  1. 这里虽然使用了 extern crate test;,但是项目的 Cargo.toml 文件中依赖区并不需要添加对 test 的依赖;
  2. 评测函数 fn bench_add_two(b: &mut Bencher) {} 上面使用 #[bench] 做标注,同时函数接受一个参数,b 就是 Rust 提供的评测器。这个写法是固定的。

然后,在工程根目录下,执行

cargo bench

输出结果类似如下:

展开阅读全文