美文网首页
ios获取FPS

ios获取FPS

作者: sma11case | 来源:发表于2016-08-31 14:01 被阅读358次

由于想统计一下动画增加时对性能的影响,就写了几个小函数,用于获取FPS.

  • PS:看过一个FPSLabel的例子,里面用了几个类来实现,虽然功能看起来很多,但那些不相干功能封装在一起我认为严重不合理,特别是动不动就实例化,我极反感,根本不需要消耗内存的事情为什么要实例化.
  • FPS全局只需要一个,其它地方只需要获取一下当前FPS就好了,最大化减少资源消耗.
  • 在获取FPS前调用一下fpsStart()进行初始化,然后不断调用getFpsCount()就是FPS了
static CADisplayLink *gs_fpsLink = nil;
static size_t gs_fpsCount = 0;

void fpsStart()
{
    if (gs_fpsLink) return;
    
    CADisplayLink *link = [CADisplayLink displayLinkWithTarget:[IOSUtils class] selector:@selector(fpsTick:)];
    [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
    gs_fpsLink = link;
}

size_t getFpsCount()
{
    return gs_fpsCount;
}

void fpsStop()
{
    [gs_fpsLink removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
    gs_fpsLink = nil;
}

@implementation IOSUtils
+ (void)fpsTick:(CADisplayLink *)link
{
    static size_t _count = 0;
    static NSTimeInterval _lastTime = 0;
    
    if (_lastTime == 0) {
        _lastTime = link.timestamp;
        return;
    }
    
    _count++;
    NSTimeInterval delta = link.timestamp - _lastTime;
    if (delta < 1) return;
    
    _lastTime = link.timestamp;
    double fps = _count / delta;
    _count = 0;
    
    gs_fpsCount = (size_t)round(fps);
}
@end

相关文章

网友评论

      本文标题:ios获取FPS

      本文链接:https://www.haomeiwen.com/subject/amwqettx.html