微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS上的CGBitmapInfo值性能

我正在UIView的drawRect中绘制CGBitmapContext的片段.什么是最好的CGBitmapInfo枚举值,以确保性能最佳?现在我正在使用kCG ImageAlphaPremultipliedLast | 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是可变的,因此用户可以在其上绘图,向其添加图像等.

解决方法

我用kCGImageAlphaPremultipliedLast |进行了测试kCGBitmapByteOrder32Big vs kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little和分析器确实告诉我代码路径略有不同.

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐