美文网首页
iOS 性能检测

iOS 性能检测

作者: cyhai | 来源:发表于2019-10-14 17:21 被阅读0次
    启动耗时
    页面加载耗时
    CPU占用
    内存占用
    传送门:https://github.com/CYHAI9/MonitorTools

    启动耗时

    image.png
    启动耗时主要分main函数前后时间,pre-main的时间是相对较难拿到的,参考美团性能检测([https://tech.meituan.com/2018/12/06/waimai-ios-optimizing-startup.html](https://tech.meituan.com/2018/12/06/waimai-ios-optimizing-startup.html
    可以从获取进程的开始的时间。
    #import <sys/sysctl.h>
    #import <mach/mach.h>
    
    + (BOOL)processInfoForPID:(int)pid procInfo:(struct kinfo_proc*)procInfo
    {
        int cmd[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid};
        size_t size = sizeof(*procInfo);
        return sysctl(cmd, sizeof(cmd)/sizeof(*cmd), procInfo, &size, NULL, 0) == 0;
    }
    
    + (NSTimeInterval)processStartTime
    {
        struct kinfo_proc kProcInfo;
        if ([self processInfoForPID:[[NSProcessInfo processInfo] processIdentifier] procInfo:&kProcInfo]) {
            return kProcInfo.kp_proc.p_un.__p_starttime.tv_sec * 1000.0 + kProcInfo.kp_proc.p_un.__p_starttime.tv_usec / 1000.0;
        } else {
            NSAssert(NO, @"无法取得进程的信息");
            return 0;
        }
    }
    

    业界当中虽然有采用加载某个执行文件load方法打点和找到叶子节点的dylib,然后以其中某个类的+load方法的执行时间作为起始点这两个方法,两个方法在于精确性问题,所以同样存在一个问题,就是Initializers方法前的时间都没拿到,起始点过后。
    待续。。。。。。

    相关文章

      网友评论

          本文标题:iOS 性能检测

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