#性能 #无std

无std embedded-profiling

无std嵌入式目标进行性能分析

13个版本

0.3.0 2021年12月25日
0.2.4 2021年12月20日
0.1.6 2021年11月24日
0.1.4 2021年10月31日

2022年排名 嵌入式开发

每月下载量 43次
用于 5 软件包

MIT/Apache

23KB
302

嵌入式性能分析

一个针对无std嵌入式环境的功能性轻量级框架。

文档

用法

初始化非常类似于log软件包的初始化。默认情况下,有一个无操作分析器,直到你调用set_profiler之前什么也不做。一旦安装了分析器,你的分析功能就会开始使用。

或者,如果你不想使用全局安装的分析器或处理dyn trait对象的开销,你可以直接在实现该特性的结构上使用特性方法。

你可以手动开始和结束快照

let start = embedded_profiling::start_snapshot();
// (...) some expensive computation
let snapshot = embedded_profiling::end_snapshot(start, "name-of-computation");
// Optionally, log it
embedded_profiling::log_snapshot(&snapshot);

或者在闭包中分析一些代码

embedded_profiling::profile("profile println", || {
    println!("profiling this closure");
});

使用过程宏

启用proc-macros特性后,你可以简单地使用过程宏profile_function注解目标函数。请注意,你必须首先使用set_profiler函数设置分析器。

#[embedded_profiling::profile_function]
fn my_long_running_function() {
    println!("Hello, world!");
}

示例项目与EmbeddedProfiler实现

feather_m4开发板上提供了一个工作示例程序,可在embedded-profiling github仓库中找到。这些示例使用一些实现了该特性的库,包括ep-systickep-dwtep-pin-toggle

最低支持的Rust版本 (MSRV)

本软件包保证在稳定版Rust 1.57及更高版本上编译。它可能可以与较旧版本兼容,但在任何新补丁版本中可能会发生变化。

许可证

本代码的许可证为以下之一

由您自行选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,将按照上述方式双重授权,没有任何附加条款或条件。

依赖项

约160–380KB