iOS开发 – 在状态栏显示FPS,CPU和内存信息
前言
今天在用Instruments分析App的时候,总感觉看起来不太直观。到Github上找了找,发现几乎都是只显示FPS的,而且效果也不是我想要的。于是就自己写了个
源码地址
LHPerformanceStatusBar
效果
字体颜色会根据阈值进行颜色变化,性能差的时候字体会变成红色,性能一般的时候会变成橘黄色,阈值可配。
集成
CocoaPod集成
pod LHPerformanceStatusBar
使用
– (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[LHPerformanceMonitorService run];
}
原理
FPS的计算
CoreAnimation有一个很好用的类CADisplayLink,这个类会在每一帧绘制之前调用,并且可以获取时间戳。于是,我们只要统计出,在1s内的帧数即可。
– (void)envokeDisplayLink:(CADisplayLink *)displayLink{
if (_lastTimestamp == -1) {
_lastTimestamp = displayLink.timestamp;
return;
}
_countPerFrame ++;
NSTimeInterval interval = displayLink.timestamp – _lastTimestamp;
if (interval < 1) {
return;
}
_lastTimestamp = displayLink.timestamp;
CGFloat fps = _countPerFrame / interval;
//…
}
内存和CPU信息的获取
CPU和内存的获取采用了mach头文件中的方法,调用了底层API,采用C方式来获取。