美文网首页
1分钟学会Instrument CPU Profiler 优化C

1分钟学会Instrument CPU Profiler 优化C

作者: pengxiaochao | 来源:发表于2023-05-28 23:17 被阅读0次

    最近项目主要功能已经完成,所以针对项目需要做一个性能优化,以检查代码里是否有些代码写的不够优秀,是否有可优化的空间,从而使 App用最小的性能消耗满足功能的实现;

    使用工具
    Xcode 14.0.1
    Instruments

    第一步: 打开Xcode自带的Instruments

    image.png

    选择 CPU Profiler工具

    image.png

    按上面操作,build 成功后弹出 Instruments工具,选择CPU Profiler选项

    到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!

    1.选中Xcode先把程序 (command + R)运行起来
    2.选中真机设备,选择需要检测的 app项目;
    3.点击Recoder录制,底部工具栏有个Call Tree的选项,点开,选中Invert Call Tree 和Hide System Libraries; (如下图所示)

    Separate by Thread -> 按线程分割
    Invert Call Tree -> 反转调用顺序
    Hide System Libraries -> 隐藏系统库
    Flatten Recursion -> 展平递归

    选中 CPU Usage 这一栏,也可展开查看,每一个核心的性能损耗在哪些函数调用上;

    image.png

    4.依次找出CPU占用率较高的函数调用栈,看看是否有优化的必要;(举个例子如下图所示)
    这里NSDateNSString的转换是是个类方法,每次都要创建NSDateFormatter对象, 因此会产生不必要的性能损耗,所以我们可以创建一个 static类型的NSDateFormatter对象,从而减少某些常用对象的创建销毁, 进而减少CPU的使用率;

    5.在整个工具中,CPU占用率最高的从上往下排,可以找到看看哪些是自己实现的代码,有优化空间,进而优化后再看整个appCPU的占用率是否有下降;

    image.png
    原始代码
    + (NSString*)stringWtihTimeInterval:(NSTimeInterval)interval {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss SSS"];
        NSDate *dateNow =  [NSDate dateWithTimeIntervalSince1970:interval];
        NSString *currentTimeString = [formatter stringFromDate:dateNow];
        return currentTimeString;
    }
    
    
    修改后的代码
    static NSDateFormatter *formatter;
    
    + (NSString *) stringWtihTimeInterval:(NSTimeInterval)interval {
        if (!formatter) {
            formatter = [[NSDateFormatter alloc] init];
            [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss SSS"];
        }
        NSDate *dateNow =  [NSDate dateWithTimeIntervalSince1970:interval];
        NSString *currentTimeString = [formatter stringFromDate:dateNow];
        return currentTimeString;
    }
    

    CPU Profiler 性能调优是每一个iOS高级开发都必须要掌握的技能,今天就简单记录一下,谢谢各位看官姥爷🙏;

    相关文章

      网友评论

          本文标题:1分钟学会Instrument CPU Profiler 优化C

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