原理
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方式来获取。