Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何在Objective-C for iOS中测量两行代码之间的时间?_Ios_Objective C_Xcode_Cocoa Touch - Fatal编程技术网

我如何在Objective-C for iOS中测量两行代码之间的时间?

我如何在Objective-C for iOS中测量两行代码之间的时间?,ios,objective-c,xcode,cocoa-touch,Ios,Objective C,Xcode,Cocoa Touch,我有以下代码需要一段时间才能处理: self.itemsArray = [Helper changeTheA:self.itemsArray]; self.itemsArray = [Helper convertDates:self.itemsArray]; 有没有一种方法,在仪器或其他地方,我可以测量从第一行代码到第二行代码的时间。。。。以滴答、毫秒或其他方式 我想做一些调整,但我需要能够测量,以便查看我是否比以前的代码有所改进。最快、最脏,可能不是很精确的方法 NSDate *startD

我有以下代码需要一段时间才能处理:

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函数来执行您提供的块


大旁注
正如Justin指出的那样,创建一个
NSDate
然后将其注销的实际行为会对您的测量产生干扰,因此这种技术只对获得大致的数据有好处,即使这样,您也可能会在计时块内运行大量的代码迭代。如果您需要精确的测量,请跳到Justin的答案

是。你可以用仪器的取样器来做这个

运行应用程序,运行程序一段时间,然后在包含以下内容的仪器中找到符号:

self.itemsArray = [Helper changeTheA:self.itemsArray];
self.itemsArray = [Helper convertDates:self.itemsArray];

它应该逐行显示重量。还请注意,仪器允许您指定采样频率,最短为40微秒。

我将使用以下代码:

NSTimeInterval start = CACurrentMediaTime();

// your code goes here

NSTimeInterval end = CACurrentMediaTime();
NSTimeInterval delta = end - start;
NSLog(@"Execution took %f seconds.", delta);

它比
NSDate

@Justin精确得多。我通常只在目标代码循环了很多次的情况下使用它(例如,我会不断增加迭代次数,直到我得到一些能够显示可测量差异的东西)我只想要大概的数字。超出时间限制编辑-读起来就像上面的帖子:这是相对缓慢和不准确的。对于许多应用程序来说,这是太多的干扰。这适用于我所需要的。我只需要说几秒钟,没有比这更深刻的了,所以这对我来说很有效。谢谢。@Paul.太酷了。虽然您一开始确实提到它不准确,但澄清会有所帮助。干杯