【问题标题】:Benchmarking a particular method in Objective-C在 Objective-C 中对特定方法进行基准测试
【发布时间】:2010-06-11 09:10:20
【问题描述】:

我在 Objective-C 应用程序中有一个关键方法,我需要尽可能地对其进行优化。我首先需要对这一单一方法进行一些简单的基准测试,以便在优化时比较我的进度。

以毫秒为单位跟踪给定方法的执行时间并将其打印到控制台的最简单方法是什么。

【问题讨论】:

    标签: iphone objective-c performance optimization benchmarking


    【解决方案1】:

    CFAbsoluteTimeGetCurrent() (大约 6 微秒)或 mach/mach_time.h 中的 mach_absolute_time() (有点快,但您需要调用 mach_timebase_info() 并进行一些转换)。然后您可以打印到标准输出或使用 NSLog;请注意,NSLog 需要很长时间(50 毫秒?),因此您希望在进行测量后 执行此操作。我认为 stdout 会快一点,但不会进入 syslog(即 Xcode Organizer/iPhone Configuration Utility 控制台)。

    【讨论】:

      【解决方案2】:

      其他人没有提到的一件事......当您使用 Instruments 或 Shark 进行性能检查时,请在设备而不是模拟器上运行您的应用程序。该设备在许多方面都比模拟器慢得多,但有时实际上对于某些硬件加速但模拟器没有加速的事情实际上更快,因此检查设备是获得准确图片的唯一方法。

      另外,请注意 NSLogs 会减慢它的速度很多

      【讨论】:

      • +1 NSLog 只能用于包含相同数量的 NSLog 语句的代码段之间的相对测量。
      • 如果我编译一个带有 NSLogs 的应用程序,即使我没有主动调试,NSLogs 还会执行吗?
      • @Jasconius - 是的,它们仍然会输出到终端。
      【解决方案3】:

      有很多方法可以检测您的代码,但通过 Instruments 和/或 Shark 运行它应该可以为您提供足够的信息来了解您的代码在哪里运行缓慢。但请记住,过早的优化是万恶之源。

      【讨论】:

        【解决方案4】:

        【讨论】:

        • 我找到了一个可以给我累积CPU时间的地方,但是这个方法每次调用的执行时间差别很大,所以我需要一个每次调用的细分,找不到.一点帮助?
        猜你喜欢
        • 1970-01-01
        • 2010-11-03
        • 1970-01-01
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 2011-02-02
        • 2023-03-25
        • 1970-01-01
        相关资源
        最近更新 更多