美文网首页
iOS 使用Instruments工具Time Profiler

iOS 使用Instruments工具Time Profiler

作者: 小盟城主 | 来源:发表于2019-01-14 17:26 被阅读28次

      在项目运行时有时候会出现卡顿感,例如tableView滑动出现卡顿,这个时候就需要追踪卡顿的来源,这个时候就用到Instruments中的Time Profiler来进行性能优化。

    1. 先预编译项目(command+i),然后在弹出来的Instruments工具中选择Time Profiler

      Instruments面板
    2. 点击开始运行项目,为了测试这个性能我故意在cell里面添加了阻塞性能代码

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        static NSString *cellID = @"cellID";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
        if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
        }
        cell.textLabel.text = [NSString stringWithFormat:@"测试数据%ld",indexPath.row];
        for (int i = 0; i < 1000; i++) {
            [cell addSubview:[UILabel new]];
        }
        return cell;
    }
    
    1. 然后在运行的项目中滑动tableView会发现出现严重的卡顿感

      Time Profiler
    2. 会发现CPU此刻处于暴增状态,接近占用100%,所以这个时候就需要找出造成CPU消耗这么大的问题所以,在下面的面板中选中Call Tree中的Separate by ThreadHide System Libraries

      Time Profiler配置
    3. 接下来在线程中找到问题代码,然后双击定位到代码的位置


      找到问题代码
    问题代码位置

    注意

    如果time profiler中看不到方法名只能看到十六进制地址的解决办法
    1、设置profilerdebug模式
    首先打开Edit Scheme

    打开Edit Scheme
    设置profilerdebug
    设置profiler

    2、设置Debug Information Format中对应的Debug下为DWARF with dSYM File。和查看crash log文件一样需要使用dSYM文件来解析方法名称,没有这个的话只能显示十六进制的地址。

    Debug Information Format

    Demo下载

    相关文章

      网友评论

          本文标题:iOS 使用Instruments工具Time Profiler

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