【发布时间】:2010-06-11 09:10:20
【问题描述】:
我在 Objective-C 应用程序中有一个关键方法,我需要尽可能地对其进行优化。我首先需要对这一单一方法进行一些简单的基准测试,以便在优化时比较我的进度。
以毫秒为单位跟踪给定方法的执行时间并将其打印到控制台的最简单方法是什么。
【问题讨论】:
标签: iphone objective-c performance optimization benchmarking
我在 Objective-C 应用程序中有一个关键方法,我需要尽可能地对其进行优化。我首先需要对这一单一方法进行一些简单的基准测试,以便在优化时比较我的进度。
以毫秒为单位跟踪给定方法的执行时间并将其打印到控制台的最简单方法是什么。
【问题讨论】:
标签: iphone objective-c performance optimization benchmarking
CFAbsoluteTimeGetCurrent() (大约 6 微秒)或 mach/mach_time.h 中的 mach_absolute_time() (有点快,但您需要调用 mach_timebase_info() 并进行一些转换)。然后您可以打印到标准输出或使用 NSLog;请注意,NSLog 需要很长时间(50 毫秒?),因此您希望在进行测量后 执行此操作。我认为 stdout 会快一点,但不会进入 syslog(即 Xcode Organizer/iPhone Configuration Utility 控制台)。
【讨论】:
其他人没有提到的一件事......当您使用 Instruments 或 Shark 进行性能检查时,请在设备而不是模拟器上运行您的应用程序。该设备在许多方面都比模拟器慢得多,但有时实际上对于某些硬件加速但模拟器没有加速的事情实际上更快,因此检查设备是获得准确图片的唯一方法。
另外,请注意 NSLogs 会减慢它的速度很多。
【讨论】:
有很多方法可以检测您的代码,但通过 Instruments 和/或 Shark 运行它应该可以为您提供足够的信息来了解您的代码在哪里运行缓慢。但请记住,过早的优化是万恶之源。
【讨论】:
【讨论】: