Iphone 在Objective-C中对特定方法进行基准测试

Iphone 在Objective-C中对特定方法进行基准测试,iphone,objective-c,performance,optimization,benchmarking,Iphone,Objective C,Performance,Optimization,Benchmarking,我在Objective-C应用程序中有一个关键方法,我需要尽可能地优化它。我首先需要在这个单一的方法上做一些简单的基准测试,以便在优化时比较我的进度 以毫秒为单位跟踪给定方法的执行时间并将其打印到控制台的最简单方法是什么。插入代码的方法有很多种,但是通过工具和/或Shark运行它应该可以提供足够的信息,让您了解代码的速度有多慢。但请记住,过早优化是万恶之源。其他人没有提到的一件事。。。使用Instruments或Shark检查性能时,请在设备上而不是模拟器上运行应用程序。该设备在很多方面都比模拟

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


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

插入代码的方法有很多种,但是通过工具和/或Shark运行它应该可以提供足够的信息,让您了解代码的速度有多慢。但请记住,过早优化是万恶之源。

其他人没有提到的一件事。。。使用Instruments或Shark检查性能时,请在设备上而不是模拟器上运行应用程序。该设备在很多方面都比模拟器慢得多,但在某些方面,它的硬件加速了,但模拟器却没有,因此检查设备是获得准确图像的唯一方法


另外,请注意,NSLogs会使其速度减慢很多。

CFAbsoluteTimeGetCurrent()(约6微秒)或mach/mach\u time.h中的mach\u absolute\u time()(速度稍快,但需要调用mach\u timebase\u info()并进行一些转换)。然后可以打印到标准输出或使用NSLog;请注意,NSLog需要时间(50毫秒?),因此您希望在进行测量后进行此操作。我认为stdout要快一点,但不会转到syslog(即Xcode Organizer/iPhone配置实用程序控制台)。

+1 NSLog应该只用于包含相同数量NSLog语句的代码段之间的相对测量。如果我编译一个包含NSLog的应用程序,即使我没有进行积极调试,NSLogs还会执行吗?@Jasconius-是的,它们仍然会输出到终端。我找到了一个地方,它会给我累计的CPU时间,但是这个方法每次调用的执行时间相差很大,所以我需要对每次调用进行细分,找不到。帮点忙?