CoreAnimation有一個很好用的類CADisplayLink
,這個類會在每一幀繪製以前調用,而且能夠獲取時間戳。因而,咱們只要統計出,在1s內的幀數便可。git
- (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和內存的獲取採用了mach頭文件中的方法,調用了底層API,採用C方式來獲取。github