rust的性能测试

一、性能测试

在rust中,只有lib.rs才可能进行extern crate的集成测试,二进制形式的测试是不可以的。原因在于rust的设计初衷就是在main.rs中尽量少完成功能,更多的功能转入到库中。这样,在二进制主程序中就不会有过多的性能来测试。在rust中,针对性能测试也提供了专门的属性#[bench]支持,这样就可以快速的在指定的场景资源情况进行资源测试,这在一门语言中还是比较少见的。

二、rust中如何进行性能测试

看下面的代码:

#![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));
    }
}

其测试的结果:

running 2 tests
test tests::it_works ... ignored
test tests::bench_add_two ... bench:         1 ns/iter (+/- 0)
test result: ok. 0 passed; 0 failed; 1 ignored; 1 measured

从运行结果可以看到基础测试的单位是纳秒(ns);
rust这玩意儿不好使,版本太多,而且test这个属性本身是一个不稳定性的特性,如果使用stable版本会报“#![feature] may not be used on the stable release channel”,即如果不是不稳定版本,需要安装一个nightly版本,有点尴尬。不过在社区中有一些提供了稳定的版本基准测试如criterion 等,有兴趣可以自己去github上下载下来试用一下。

三、总结

在写这个Rust的系列时,基本上看到的是冰火两重天,一方面有人嗷嗷叫好,另一方面,很多人都说这个太难学。确实是,搞这个测试就费了不少劲儿。rust的演进又比较快,一些老的文档又跟不上。这对初学者来说,绝对是个噩梦。但愿Rust能够快速的发展起来,能够在语言开发这个大家庭里有独到并重要的一个位置,而不是最终沦落成一个小众的产品。c/c++就是前车之辙。
努力吧,归来的少年!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值