嘿那里,我对iPhone开发和目标C很新鲜。对不起,如果这个问题太愚蠢....
这是我的问题,我想计算一下我的功能所花费的时间。喜欢UIGetScreenImage。这是代码:
-(void)screenCapture{
CGImageRef screen = UIGetScreenImage();
UIImage* image = [UIImage imageWithCGImage:screen];
CGImageRelease(screen);
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
}
我该怎么做来计算这个过程所花费的时间?示例代码将不胜感激。
感谢您的帮助。期待您的回复和想法。 :d
答案 0 :(得分:4)
您可以获取方法开始和结束的当前日期,并检查这两个时刻之间的时间:
- (无效)抓屏{
NSDate * startDate = [NSDate date];
...
NSDate * finishDate = [NSDate date];
NSLog(@“%f”,[finishDate timeIntervalSinceDate:startDate]);
}
编辑:我认为我上面描述的方法(温和地说)并不是衡量流程时间的最佳解决方案。现在我使用“Big Nerd Ranch”博客here中描述的使用mach_absolute_time
函数的方法。我从帖子中复制了代码以说明该方法 - 使用此代码片段可以测量任意块的擦除时间:
#import <mach/mach_time.h> // for mach_absolute_time() and friends
CGFloat BNRTimeBlock (void (^block)(void)) {
mach_timebase_info_data_t info;
if (mach_timebase_info(&info) != KERN_SUCCESS) return -1.0;
uint64_t start = mach_absolute_time ();
block ();
uint64_t end = mach_absolute_time ();
uint64_t elapsed = end - start;
uint64_t nanos = elapsed * info.numer / info.denom;
return (CGFloat)nanos / NSEC_PER_SEC;
} // BNRTimeBlock
答案 1 :(得分:1)
我认为可以找到更简单(更简单)的解决方案here
NSDate *methodStart = [NSDate date];
/* ... Do whatever you need to do ... */
NSDate *methodFinish = [NSDate date];
NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];