当前位置: 首页 > >

ios Instruments之Time Profiler

发布时间:

文章目录

一、Time Profiler(方法执行时间)

1、简介

2、原理

3、注意事项

4、使用步骤(结合场景)


一、Time Propfiler


1、简介


Time Profiler帮助我们分析代码(方法)的执行时间,找出导致程序变慢的原因,
告诉我们“时间都去哪儿了?”。
在开发的过程中,我们经常能感觉到,点击某一按钮,或者做了某一操作,
有卡顿,这就是延迟,那使用此工具,就可以揪出耗时的函数。

2、原理


它按照固定的时间间隔来跟踪每一个线程的堆栈信息,
通过统计比较时间间隔之间的堆栈状态,来推算某个方法执行了多久,
并获得一个*似值。

3、注释事项


真机测试,而不是模拟器!!!!!!!
模拟器虽然可以加快开发效率,但却不能准确提供真机的性能参数模拟器运行在Mac上,
然而Mac上的cpu比ios设备要快很多,相反,Mac上的GPU和ios设备上的不一样,
模拟器不得已需要在软件层面(CPU)模拟ios设备,
所以GPU的相关操作在模拟器上面运行的会更慢。

4、使用步骤


场景 : 有一块草坪,草坪上种了一定数量的花,花儿盛开的时候有一定的姿态(帧动画实现)。


编程语言的实现就是 : push一个新的页面,数个UIImage同时执行帧动画。即UIImage的NSArray *images属性。


下面贴上一个代码片段,分别用imageName 和 imageContentOfFile获取UIImage实例


// 1、imageName获取UIImage对象
- (NSMutableArray*)animatedImages01
{
if (!_animatedImages01) {

_animatedImages01 = [[NSMutableArray alloc]init];

for (int i = 1; i < 27; i++)
{

NSString *imageName = [NSString stringWithFormat:@"loading%d.png",i];
UIImage *image = [UIImage imageNamed:imageName];
[_animatedImages01 addObject:image];

}

}

return _animatedImages01;
}

// 2、用imageContentOfFile获取UIImae获取实例
- (NSMutableArray*)animatedImages02
{

if (!_animatedImages02) {

_animatedImages02 = [[NSMutableArray alloc]init];

for (int i = 1; i < 27; i++) {

NSString *imageName = [NSString stringWithFormat:@"loading%d",i];
NSString *path = [[NSBundle mainBundle]pathForResource:imageName ofType:@"png"];

UIImage *image = [UIImage imageWithContentsOfFile:path];
NSLog(@"%@",image);
[_animatedImages02 addObject:image];

}

}

return _animatedImages02;
}

(1) 创建工程,在MainController的viewDidLoad() 方法中调用NSLog(@"%ld",self.animatedImages01.count); 并重写touchBegin
方法,push到Secondcontroller的viewDidLoad() 方法中调用NSLog(@"%ld",self.animatedImages02.count); 并运行。
.


(2) 打开Instruments,选择 TimeProfiler,选择choose,进入如下页面

.


(3) 开始录制,一波操作后得到如下图

.


(3) 进而我们可以总结出imageName 和imageContentOfFile方法的差异


注意 : 上图实在模拟器上面测试得到的结果,实际结果还是得以真机为准。不过,我们可以发下,两者对比相差接*10倍哦。还是具有一定的参考价值的


(4) 可双击进入查看方法代码

.


(5) 还可以进一步设置耗时范围(过滤作用)



友情链接: 时尚网 总结汇报 幼儿教育 小学教育 初中学习资料网