ios开发中计算代码运算时间_Objective-C 计算代码运行时间

今天看到一篇关于iOS应用性能优化的文章,其中提到计算代码的运行时间,觉得非常有用,值得收藏。不过在模拟器和真机上是有差异的,以此方法观察程序运行状态,提高效率。

第一种:(最简单的NSDate)

NSDate* tmpStartData = [NSDate date];

//You code here...

double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData];

NSLog(@"cost time = %f", deltaTime);

第二种:(将运行代码放入下面的Block中,返回时间)

#import // 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;

}

第三种:

/**

* 计算脚本时间

* @param $last 最后一次的运行clock

* @param $key 标识

* @return 当前clock

*/

double t(double last, char* key){

clock_t now = clock();

printf("time:%fs \t key:%s \n", (last != 0) ? (double)(now - last) / CLOCKS_PER_SEC : 0, key);

return now;

}

double t1 = t(0, "");

//do something

t(t1, "end");

飘飘白云文中说到,对于UIImage载入图像的方法,下面第一种更为高效,因为iOS会自带 cache 载入图像。

+ (UIImage *)imageNamed:(NSString *)name;

- (id)initWithContentsOfFile:(NSString *)path;

但是,imageNamed方法只能载入bundle中的文件,如网络图像解析就无能为力了。

正好这里总结到计算代码运行时间,就以此为例看看两种方法到底谁更高效,这里我用最简单的NSDate计算耗时:

for (int i=0 ; i<10000; i++) {

UIImage *image = [UIImage imageNamed:@"icon.png"];

// UIImage *image = [[UIImage alloc] initWithContentsOfFile:@"icon.png"];

image = nil;

}

double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData];

NSLog(@"cost time = %f", deltaTime);

输出结果:

cost time = 0.022821 //imageNamed

cost time = 0.102620 //initWithContentsOfFile

这里图片我用的一张1024x1024像素的png,可见两种加载图像的方法耗时差别还是挺大的。

部分引用自:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值