我有一个在Objective-C应用程序中至关重要的方法,我需要尽可能地进行优化。首先,我需要对这个单一的方法进行一些简单的基准测试,以便在优化过程中比较我的进展。
最简单的方法是如何跟踪给定方法的执行时间(例如以毫秒为单位),并将其打印到控制台上。
我有一个在Objective-C应用程序中至关重要的方法,我需要尽可能地进行优化。首先,我需要对这个单一的方法进行一些简单的基准测试,以便在优化过程中比较我的进展。
最简单的方法是如何跟踪给定方法的执行时间(例如以毫秒为单位),并将其打印到控制台上。
CFAbsoluteTimeGetCurrent()(大约6微秒)或来自mach/mach_time.h的mach_absolute_time()(速度略快,但需要调用mach_timebase_info()并进行一些转换)。然后,您可以打印到stdout或使用NSLog;请注意,NSLog需要很长时间(50毫秒?),因此您要在测量之后进行。stdout可能会快一点,但不会进入syslog(即Xcode Organizer/iPhone Configuration Utility控制台)。
其他人没有提到的一件事......当您使用Instruments或Shark进行性能检查时,请在设备上运行应用程序,而不是模拟器。对于许多事情,设备比模拟器慢得多,但有时对于某些硬件加速的事物实际上会更快,而模拟器则不会,因此在设备上进行检查是获取准确图片的唯一方法。
此外,请注意NSLogs可能会使其速度变慢很多。
有很多方法可以为您的代码添加仪器,但是通过Instruments和/或Shark运行它应该足以提供足够的信息,以查看您的代码在哪里变慢。但请记住,过早地进行优化是万恶之源。