用 Date() 测量执行时间
Posted
技术标签:
【中文标题】用 Date() 测量执行时间【英文标题】:Measuring execution time with Date() 【发布时间】:2020-08-04 09:51:24 【问题描述】:我想比较一个函数的不同实现:
let start1 = Date()
_ = funcImplA()
let end1 = Date()
let start2 = Date()
_ = funcImplB()
let end2 = Date()
let time1 = end1.timeIntervalSince(start1)
let time2 = end2.timeIntervalSince(start2)
print("ImplA = \(time1 ), ImplB = \(time2)")
我得到的结果是第一个度量总是比第二个慢 (time1 > time2
)。这意味着如果我在通话之间切换,先测量funcImplB()
,然后再测量funcImplA
,我仍然会得到time1 > time2
。
可能是什么原因?
【问题讨论】:
您是否在打开优化的真实编译版本中进行测试? Swift Playground 不适合测量执行时间,因为它们实际上并没有编译代码,而且值的实时显示也会显着影响执行时间。 你可以在this question找到一些衡量性能的例子 【参考方案1】:您可以在单元测试中对此进行测试并使用measure block
也请考虑在真实设备上运行,而不是模拟器
【讨论】:
以上是关于用 Date() 测量执行时间的主要内容,如果未能解决你的问题,请参考以下文章
[linux time命令学习篇] time 统计命令执行的时间