#rate #sensor #instrumentation #game #frame-rate #sample-rate #time-measurement

update_rate

一个用于FPS计数器等的高效、低开销的通用更新率计数器

5个稳定版本

2.0.1 2020年6月9日
2.0.0 2017年7月30日
1.1.0 2017年3月16日
1.0.1 2017年3月16日

性能分析 中排名第 200

Download history 14/week @ 2024-03-28 8/week @ 2024-04-04 1/week @ 2024-04-25

每月下载量 74
task-executor 中使用

MIT 许可证

18KB
276

update_rate

Build Status docs.rs documented available on crates.io

一个用于每秒帧数指标、测量平均值等的高效、低开销的通用更新率计数器。

use update_rate::{RateCounter, RollingRateCounter};

let mut c = RollingRateCounter::new(10);

loop {
    c.update();
    mycrate.work(); // Perform the slow operation
    println!("Updating at {}", c); 
}

lib.rs:

此crate提供了一个用于计数更新的实用工具,例如帧率。

实现 RateCounter 特性的类型有一个名为 .update() 的方法,该方法应该在您的系统更新时调用(例如,每帧、每物理更新等)。

RateCounterImmut 特性添加了一个不可变的更新方法,该方法消耗更新率计数器并返回一个新的更新率计数器。

这也可以通过阴影和 update_immut() 方法以不可变方式完成。

示例

要记住的一个重要事情是在您周期的开始调用您计数器的 update()(或 update_immut())。

use update_rate::{RateCounter, DiscreteRateCounter};
// Create a new DiscreteRateCounter with a sample rate of 10 updates
let mut c = DiscreteRateCounter::new(10);

for _ in 1..11 {
    c.update();
    // Rate should be 100 Hz with 10 ms/update
    std::thread::sleep(std::time::Duration::from_millis(10));
}

let difference = 100.0 - c.rate();
println!("Rate was {}", c.rate());
assert!(difference < 10.0, "Counter rate should be closer to actual rate.");

无运行时依赖