在 Go 中精确测量持续时间
虽然大多数应用程序使用标准时间包来测量持续时间,但解决其局限性至关重要获得准确的结果。 time.Now() 依赖于系统时间,系统时间可能会受到时区更改以及与 NTP 服务器的时钟同步的影响。
为了克服这些挑战,Go 提供了不受外部时间影响的“单调时钟”调整。从 Go 1.9 开始,Go 中的持续时间自动利用这个单调时钟。
这意味着以下代码始终计算大约 20 毫秒的正经过时间,即使挂钟在定时操作期间发生变化:
start := time.Now() ... operation that takes 20 milliseconds ... t := time.Now() elapsed := t.Sub(start)
其他习惯用法,例如 time.Since(start)、time.Until(deadline) 和time.Now().Before(deadline) 也能抵抗挂钟重置。
因此,要精确测量 Go 中的执行时间,只需使用 time 包的 time.Now() 和 time.Sub()功能。这些功能现在可确保经过的时间测量一致且不受系统时钟调整的影响。
以上是如何精确测量 Go 的执行时间?的详细内容。更多信息请关注PHP中文网其他相关文章!