一尘不染

如何对Swift代码执行进行基准测试?

swift

除了以下内容之外,是否有其他方法/软件可以给出执行用Swift编写的代码块所需的准确时间?

let date_start = NSDate()

// Code to be executed

println("\(-date_start.timeIntervalSinceNow)")

阅读 321

收藏
2020-07-07

共1个答案

一尘不染

如果您只想为代码块提供独立的计时功能,则可以使用以下Swift助手功能:

func printTimeElapsedWhenRunningCode(title:String, operation:()->()) {
    let startTime = CFAbsoluteTimeGetCurrent()
    operation()
    let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
    print("Time elapsed for \(title): \(timeElapsed) s.")
}

func timeElapsedInSecondsWhenRunningCode(operation: ()->()) -> Double {
    let startTime = CFAbsoluteTimeGetCurrent()
    operation()
    let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
    return Double(timeElapsed)
}

前者将注销给定代码段所需的时间,后者将返回该时间作为浮点数。作为第一个变体的示例:

printTimeElapsedWhenRunningCode(title:"map()") {
    let resultArray1 = randoms.map { pow(sin(CGFloat($0)), 10.0) }
}

将注销类似:

map()经过的时间:0.0617449879646301 s

请注意,Swift基准测试会根据您选择的优化级别而有很大差异,因此这仅对Swift执行时间的相对比较有用。即使这样,也可能会在每个beta版本的基础上发生变化。

2020-07-07