【发布时间】:2014-09-05 11:49:14
【问题描述】:
我们如何测量在 Swift 中运行一个函数所用的时间?我试图像这样显示经过的时间:“经过的时间是 0.05 秒”。看到in Java,我们可以使用 System.nanoTime(),在 Swift 中有没有等效的方法可以做到这一点?
请看示例程序:
func isPrime(_ number: Int) -> Bool {
var i = 0;
for i=2; i<number; i++ {
if number % i == 0, i != 0 {
return false
}
}
return true
}
var number = 5915587277
if isPrime(number) {
print("Prime number")
} else {
print("NOT a prime number")
}
【问题讨论】:
-
这与你的时间测量问题无关,但循环可以在
sqrt(number)而不是number停止,你可以节省更多时间——但还有更多优化的想法寻找素数。 -
@holex 请忽略使用的算法。我想弄清楚我们如何测量经过的时间?
-
你可以使用
NSDate对象,你可以测量它们之间的差异。 -
如果您使用的是 XCode,我建议您使用新的性能测试功能。它为您完成所有繁重的工作,甚至多次运行它并为您提供平均时间及其标准偏差......
-
@dumbledad 您可以在单元测试中直接测量整个块的性能。例如,see this。如果您想进一步分解运行(例如,逐行代码),请查看属于 Instruments 的Time Profiler。这更加强大和全面。
标签: swift time nsdate elapsedtime