iOS 使用Instruments工具Time Profiler进行性能优化

  在项目运行时有时候会出现卡顿感,例如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下载

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容