iOS上的CGBitmapInfo值性能

时间:2013-12-18 18:24:04

标签: ios iphone ipad drawing quartz-2d

我正在UIView的drawRect中绘制CGBitmapContext的片段。什么是最好的CGBitmapInfo枚举值,以确保性能最佳?现在我正在使用kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big,但我也看到了这个stackoverflow问题片段,它提出了一个替代方案:

Why does this code decompress a UIImage so much better than the naive approach?

// makes system don't need to do extra conversion when displayed.
kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little

我的CGBitmapContext是可变的,因此用户可以在其上绘图,向其添加图像等。

1 个答案:

答案 0 :(得分:3)

我使用kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big vs kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little进行测试,并且分析器确实向我显示代码路径略有不同。

kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little直接复制内存,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big通过转换函数。

这对我在CGBitmapContext(即使在iPod 4上)绘制路径所花费的总时间几乎没有影响,然后调用setNeedsDisplayInRect:在屏幕上显示它们。此外,由于总时间基本相同,所以我坚持kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big

修改的 我切换回kCGBitmapByteOrder32Little以便与使用BGRA(小端)字节顺序的其他iOS框架(如AVFoundation)具有更好的兼容性,因为它对性能没有影响。