【问题标题】:How to clock operations in iOS - Measure performance speed?如何在 iOS 中计时操作 - 测量性能速度?
【发布时间】:2023-03-23 09:59:02
【问题描述】:

我最近尝试回答一个问题here,该问题基于速度,需要某种方法来衡量各种操作的工作时间。我偶尔看到人们提到不同编码方法的速度,我想知道,在 Objective-C 中衡量速度性能的最佳方法是什么?

这是我一直在使用的:

NSDate* operation = [NSDate date];

// Code you want to measure goes here

NSLog(@"Time: %f", -[operation timeIntervalSinceNow]);

这是一种可接受且有用的测量方法吗?是否有更好的替代方法?

【问题讨论】:

    标签: ios objective-c performance


    【解决方案1】:

    当然,这行得通。我倾向于使用 NSTimeInterval 变量,而

    -[NSDate timeIntervalSinceReferenceDate]

    方法,因为这给了我一个标量常数,我可以直接用它来做数学运算(结束时间间隔 - 开始时间间隔 = 经过的时间)

    只有当你有一个特定的代码块你想要衡量其性能时,这才真正有用。 Instruments 工具可让您全局监控程序在不同代码块中花费的时间,这通常更有用。它可以让您找到代码中的“瓶颈”,从而帮助您找到最佳的优化候选者。

    【讨论】:

      【解决方案2】:

      Stephen Canon 在此线程How to log a method's execution time exactly in milliseconds? 中的回答(23 票赞成)更准确。

      【讨论】:

      • 有趣,但斯蒂芬的回答似乎是整体的百分比,而不是实际花费的时间。还是可以派上用场的,谢谢指出。
      • 为什么使用 mach_absolute_time() 比使用 NSDates 更准确?它们都使用相同的底层时钟数据。 NSDate 只是将其标准化为秒和秒的小数部分。双精度为您​​提供足够的分辨率来进行非常准确的时间计算
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      相关资源
      最近更新 更多