2014-03-06 17 views
1

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

这里是我一直使用的是什么:

NSDate* operation = [NSDate date]; 

// Code you want to measure goes here 

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

这是可以接受的,有用的测量,以及是否有更好的替代方法?

回答

0

当然,这是有效的。我倾向于使用NSTimeInterval变量和

-[NSDate timeIntervalSinceReferenceDate]

方法,因为这给了我一个标量常数,我可以做数学与直接(结束时间间隔 - 起始时间间隔=经过时间)

如果你有一个特定的代码块,你想要衡量它的性能,这才是真正有用的。仪器工具可让您全面监控您的程序花费在不同代码块中的时间,这通常更有用。它可以让你找到你的代码中的“瓶颈”,这有助于你找到最佳的候选人。

0

Stephen Canon的回答(23 upvotes)在这个帖子里How to log a method's execution time exactly in milliseconds?更准确。

+0

有趣,但斯蒂芬的答案似乎是整体的百分比,而不是实际所需的时间。仍然可能会派上用场,谢谢指出。 – Logan

+0

为什么使用mach_absolute_time()比使用NSDates更准确?它们都使用相同的底层时钟数据。 NSDate只是将其标准化为秒和秒的小数部分。双精度为您​​提供足够的分辨率来进行非常准确的时间计算 –