如何计算快速执行时间,与CPU休眠和系统时钟变化无关

时间:2015-11-12 00:01:54

标签: swift macos benchmarking

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

1 个答案:

答案 0 :(得分:1)

我能够通过基础框架找到一个可以正确操作的马赫调用。我对执行时间进行了基准测试,与系统时钟更改和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 ---")