#时间戳 #时钟 #来源 #系统 #单调 #挂起 #序列化

zeitstempel

可以序列化的时间戳,可能包括挂起时间

3个不稳定版本

0.1.1 2021年3月18日
0.1.0 2021年3月10日
0.0.0 2021年3月3日

#242操作系统

Download history 1810/week @ 2024-03-13 2269/week @ 2024-03-20 1439/week @ 2024-03-27 1806/week @ 2024-04-03 2417/week @ 2024-04-10 2603/week @ 2024-04-17 2085/week @ 2024-04-24 3461/week @ 2024-05-01 3306/week @ 2024-05-08 2270/week @ 2024-05-15 2248/week @ 2024-05-22 2919/week @ 2024-05-29 1489/week @ 2024-06-05 1528/week @ 2024-06-12 1506/week @ 2024-06-19 1668/week @ 2024-06-26

6,679 每月下载量
3 个crate中使用(通过 glean-core

MPL-2.0 许可证

12KB
77

zeitstempel

Crates.io version docs.rs docs License: MPL 2.0 Build Status

zeitstempel是德语中的“时间戳”。


时间很难。正确的时间几乎不可能。

这个crate的唯一目的是:给我一个来自单调时钟源的整数时间戳,包括主机挂起/休眠的时间,并让我能够将其与其他时间戳进行比较。

比较来自该时钟源的时间戳是开发者的责任。操作系统重新启动后,时间戳不可比较。

为什么不使用 std::time::Instant

std::time::Instant 满足我们的某些要求

  • 它是单调的,有保证(某种程度上)。
  • 它可以与其他时间段进行比较。

然而

  • 它不能被序列化。
  • 不能保证所使用的时钟源在所有操作系统中都包含挂起/休眠时间。

示例

use std::{thread, time::Duration};

let start = zeitstempel::now();
thread::sleep(Duration::from_millis(2));

let diff = Duration::from_nanos(zeitstempel::now() - start);
assert!(diff >= Duration::from_millis(2));

支持的操作系统

我们支持以下操作系统

  • Windows*
  • macOS
  • Linux
  • Android
  • iOS

对于其他操作系统,将回退到 std::time::Instant,并与进程全局固定参考点进行比较。我们不保证测量时间包括系统在睡眠或休眠中花费的时间。

* 要使用原生Windows 10功能,请启用 win10plus 功能。否则将使用回退。

许可证

MPL 2.0。请参阅 LICENSE

依赖关系

~62KB