1、Startup冷启动/热启动时间
1.加载时长
Target -> Edit Scheme -> Run
通过在Arguments中设置参数,打印出App加载的时长,包括整体加载时长,动态库加载时长等。
在Environment Variables中添加DYLD_PRINT_STATISTICS字段,并设置为YES,在控制台就会打印加载时长。
Total pre-main time: 74.37 milliseconds (100.0%)
dylib loading time: 41.05 milliseconds (55.2%)
rebase/binding time: 8.10 milliseconds (10.9%)
ObjC setup time: 9.87 milliseconds (13.2%)
initializer time: 15.23 milliseconds (20.4%)
slowest intializers :
libSystem.B.dylib : 6.58 milliseconds (8.8%)
libBacktraceRecording.dylib : 6.27 milliseconds (8.4%)
总结:
使用DYLD_PRINT_STATISTICS测试启动加载时间
减少自定义的动态库集成
精简原有的Objective-C类和代码
移除静态的初始化操作
使用更多的Swift代码
2、Ram运行时内存
3、Pss共享比例物理内存
4、FPS帧率
-
(void)currntfps{
//以下代码加在合适的地方
_link = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)];
[_link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
}
- (void)tick:(CADisplayLink *)link {
if (_lastTime == 0) {
_lastTime = link.timestamp;
return;
}
_count++;
NSTimeInterval delta = link.timestamp - _lastTime;
if (delta < 1) return;
_lastTime = link.timestamp;
float fps = _count / delta;
NSLog(@"页面帧率:%f",fps);
_count = 0;
}
用此方法统计帧率的有一些性能损耗,所以需要控制在某些时刻采集一定的样本就及时暂停。暂停将之从RunLoop中移除即可:
在viewWillDisappear方法里移除掉监听的滑动帧率
[_link removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
网友评论