1个不稳定发布
| 0.0.0-alpha0 | 2022年12月8日 |
|---|
#884 in 嵌入式开发
56KB
1.5K SLoC
µbench
"微基准",即:微控制器
是什么
这是一个小巧的工具包,旨在帮助您在微控制器上测试程序。
这并不是一个非常好的工具包。它
- 没有尝试进行统计上严格的测试
- 不尝试减轻CPU缓存/频率缩放/操作系统上下文切换等对基准测试的影响
- 不真正提供主机端处理的机制
- 不尝试模仿
test::bench模块的输出 - 不使用
defmt生态系统 [^1](为了支持没有probe-rs支持的板)
[^1]: 没有什么阻止你编写一个利用defmt机制的Reporter,但这个工具包并不附带一个。默认的reporter是简单的,使用core::fmt,并且空间效率低下。
µbench非常有意作为临时代替品;我真诚地希望这个工具包将在不久的将来被取代。
然而,截至本文写作之时,似乎缺乏针对只想:在其设备上运行一些代码并获取循环计数,而无需启动调试器的用户的解决方案。因此有了这个工具包。
我知道的与此用例最接近的东西(我知道的)是liar,不幸的是,当禁用std功能时,它只是一个非常简单的东西。
它是如何工作的?
(特质的概述
Benchmark可以是:fn、闭包实现FnMut、带setup+teardown的自定义实现- 这些通过引用获取一些
Inp数据 (引用)
- 这些通过引用获取一些
BenchmarkRunner允许您实际运行基准测试;有两种类型- 单次(可以通过
single构造)- 恰好一个
Benchmark实现
- 恰好一个
- 套件(可以通过
suite构造)- 零个或多个在相同输入数据上运行的
Benchmark实现们
- 零个或多个在相同输入数据上运行的
- 这些中的每一个也都需要一些
impl IntoIterator<Item = T>作为输入源,其中T: Debug- 这可以是一些范围(
0..10)、一个数组(["hey", "there"])、一个迭代器((0..10).map(|x| 2u32.pow(x))),等等。
- 这可以是一些范围(
- 单次(可以通过
- 要实际运行基准测试,您需要
- 一个
Metric- 某种方法来实际测量基准测试;即时间、周期计数
- 一个
Reporter- 某种方式来报告基准测试的结果
- 一个
用法
依赖关系
~0.2–0.9MB
~11K SLoC