我有以下代码需要一段时间来处理:
self.itemsArray = [Helper changeTheA:self.itemsArray];
self.itemsArray = [Helper convertDates:self.itemsArray];
有没有一种方法,在仪器或其他地方,我可以测量从第一行代码到第二行代码所花费的时间......以滴答声或毫秒或其他方式?
我想做一些调整,但我需要能够测量以查看我是否对以前的代码进行了改进。
我有以下代码需要一段时间来处理:
self.itemsArray = [Helper changeTheA:self.itemsArray];
self.itemsArray = [Helper convertDates:self.itemsArray];
有没有一种方法,在仪器或其他地方,我可以测量从第一行代码到第二行代码所花费的时间......以滴答声或毫秒或其他方式?
我想做一些调整,但我需要能够测量以查看我是否对以前的代码进行了改进。
最快,最脏,可能不是很精确的方式
NSDate *startDate = [NSDate date];
self.itemsArray = [Helper changeTheA:self.itemsArray];
NSLog(@"changeTheA time taken: %f", -[startDate timeIntervalSinceNow]);
一个稍微复杂但可能更有用的解决方案,如果你正在做一些基本的分析可以在这里看到,它使用一个 C 函数来执行你提供的一个块。
正如贾斯汀指出的那样,创建一个NSDate
然后将其注销的实际行为会对您的测量造成干扰,因此这种技术对于获取球场数据确实有好处,即使这样,您也应该在其中运行大量的代码迭代计时块。如果您需要准确的测量值,请跳至贾斯汀的回答
是的。为此,您将使用 Instruments 的 Sampler。
运行应用程序,运行程序一段时间,然后在 Instruments 中找到包含以下内容的符号:
self.itemsArray = [Helper changeTheA:self.itemsArray];
self.itemsArray = [Helper convertDates:self.itemsArray];
它应该逐行显示权重。另请注意,Instruments 允许您指定采样频率,低至 40 微秒。
我会使用以下代码:
NSTimeInterval start = CACurrentMediaTime();
// your code goes here
NSTimeInterval end = CACurrentMediaTime();
NSTimeInterval delta = end - start;
NSLog(@"Execution took %f seconds.", delta);
它比 精确得多NSDate
。