zoukankan      html  css  js  c++  java
  • 调试

    使用可视化调试选项的Core Animation工具

    • Core Animation工具也提供了一系列复选框选项来帮助调试渲染瓶颈:

    • Color Blended Layers - 这个选项基于渲染程度对屏幕中的混合区域进行绿到红的高亮(也就是多个半透明图层的叠加)。由于重绘的原因,混合对GPU性能会有影响,同时也是滑动或者动画帧率下降的罪魁祸首之一。

    • ColorHitsGreenandMissesRed - 当使用shouldRasterizep属性的时候,耗时的图层绘制会被缓存,然后当做一个简单的扁平图片呈现。当缓存再生的时候这个选项就用红色对栅格 化图层进行了高亮。如果缓存频繁再生的话,就意味着栅格化可能会有负面的性能影响了(更多关于使用shouldRasterize的细节见第15章“图层 性能”)。

    • Color Copied Images - 有时候寄宿图片的生成意味着Core Animation被强制生成一些图片,然后发送到渲染服务器,而不是简单的指向原始指针。这个选项把这些图片渲染成蓝色。复制图片对内存和CPU使用来 说都是一项非常昂贵的操作,所以应该尽可能的避免。

    • Color Immediately - 通常Core Animation Instruments以每毫秒10次的频率更新图层调试颜色。对某些效果来说,这显然太慢了。这个选项就可以用来设置每帧都更新(可能会影响到渲染性 能,而且会导致帧率测量不准,所以不要一直都设置它)。

    • Color Misaligned Images - 这里会高亮那些被缩放或者拉伸以及没有正确对齐到像素边界的图片(也就是非整型坐标)。这些中的大多数通常都会导致图片的不正常缩放,如果把一张大图当缩 略图显示,或者不正确地模糊图像,那么这个选项将会帮你识别出问题所在。

    • Color Offscreen-Rendered Yellow - 这里会把那些需要离屏渲染的图层高亮成黄色。这些图层很可能需要用shadowPath或者shouldRasterize来优化。

    • Color OpenGL Fast Path Blue - 这个选项会对任何直接使用OpenGL绘制的图层进行高亮。如果仅仅使用UIKit或者Core Animation的API,那么不会有任何效果。如果使用GLKView或者CAEAGLLayer,那如果不显示蓝色块的话就意味着你正在强制CPU 渲染额外的纹理,而不是绘制到屏幕。

    • Flash Updated Regions - 这个选项会对重绘的内容高亮成黄色(也就是任何在软件层面使用Core Graphics绘制的图层)。这种绘图的速度很慢。如果频繁发生这种情况的话,这意味着有一个隐藏的bug或者说通过增加缓存或者使用替代方案会有提升 性能的空间。

    @interface ViewController ()

    @property (nonatomic, strong) NSArray *items;
    @property (nonatomic, weak) IBOutlet UITableView *tableView;
    @end
    @implementation ViewController
    - (NSString *)randomName
    {
        NSArray *first = @[@"Alice", @"Bob", @"Bill", @"Charles", @"Dan", @"Dave", @"Ethan", @"Frank"];
        NSArray *last = @[@"Appleseed", @"Bandicoot", @"Caravan", @"Dabble", @"Ernest", @"Fortune"];
        NSUInteger index1 = (rand()/(double)INT_MAX) * [first count];
        NSUInteger index2 = (rand()/(double)INT_MAX) * [last count];
        return [NSString stringWithFormat:@"%@ %@", first[index1], last[index2]];
    }
    - (NSString *)randomAvatar
    {
        NSArray *images = @[@"bjl_list_02", @"bjl_list_02", @"bjl_list_02", @"bjl_list_02", @"bjl_list_02", @"bjl_list_02"];
        NSUInteger index = (rand()/(double)INT_MAX) * [images count];
        return images[index];
    }
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        //set up data
        NSMutableArray *array = [NSMutableArray array];
        for (int i = 0; i < 1000; i++) {
            //add name
            [array addObject:@{@"name": [self randomName], @"image": [self randomAvatar]}];
        }
        self.items = array;
        //register cell class
        [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
    }
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [self.items count];
    }
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        //dequeue cell
        UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
        //load image
        NSDictionary *item = self.items[indexPath.row];
        //set image and text
        cell.imageView.image = [UIImage imageNamed:item[@"image"]];
        cell.textLabel.text = item[@"name"];
        //set image shadow
        cell.imageView.layer.shadowOffset = CGSizeMake(0, 5);
        cell.imageView.layer.shadowOpacity = 0.75;
        cell.clipsToBounds = YES;
        //set text shadow
        cell.textLabel.backgroundColor = [UIColor clearColor];
        cell.textLabel.layer.shadowOffset = CGSizeMake(0, 2);
        cell.textLabel.layer.shadowOpacity = 0.5;
        //rasterize
        cell.layer.shouldRasterize = YES;
        cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
        return cell;
    }

  • 相关阅读:
    MySQL 中视图和表的区别以及联系是什么?
    MAC将根目录文件夹的权限赋给用户
    PHP 基础篇 PHP 中 DES 加解密详解
    软件构架师必修科(转)
    遍历指定文件夹下所有的xml文件并动态生成HTML页面!
    使用XML创建Excel文档
    XmlTextWriter创建XML文件
    什么是耦合?
    JavaScript经典效果集锦(一)
    软件最大的追求是什么?
  • 原文地址:https://www.cnblogs.com/jingdizhiwa/p/5531504.html
Copyright © 2011-2022 走看看