我如何计算 swift 执行时间,独立于 CPU 睡眠和系统时钟变化

How do I compute swift execution time, independent of CPU sleeping and system clock changes

我一直在寻找像 CFAbsoluteTimeGetCurrent() 这样简单的东西,它不依赖于系统时钟保持不变,并且在 CPU 睡眠时忽略(所以我可以 运行 在我的笔记本电脑上进行长时间的 运行ning 基准测试并跳过它处于睡眠状态的时间)。

我能够找到一个可以通过基础框架访问的 mach 调用,它可以做正确的事情。我对独立于系统时钟变化和 CPU 睡眠的执行时间进行了基准测试。这是一个代码片段,可以对比这两种方法,并可以说明 CFAbsoluteTimeGetCurrent() 如何依赖于系统时钟。

import Foundation

let t2 = CFAbsoluteTimeGetCurrent()
let t0 = mach_absolute_time()
codeToBenchmark()
let t3 = CFAbsoluteTimeGetCurrent()
let t1 = mach_absolute_time()
let elapsed = Double(t1 - t0) / 1000000000.0
print("--- \(elapsed) \(t3 - t2) seconds ---")