gpt4 book ai didi

iphone - iOS 4.0 中 CGContext DrawLayerAtPoint 的性能问题

转载 作者:行者123 更新时间:2023-12-03 19:25:42 31 4
gpt4 key购买 nike

我在 iOS 4 中调用 CGContextDrawLayerAtPoint 时遇到了一些性能问题,这在之前版本的操作系统中似乎不存在。

我正在将在drawRect调用期间从使用CGBitmapContextCreate创建的位图上下文获取的图层复制到 View 的上下文中。 View 和位图的大小相同。

位图的创建方式为:

CGBitmapContextCreate(NULL, width, height, 8, width * 4, genericRGBSpace, kCGBitmapByteOrder32Host | kCGImageAlphaNoneSkipFirst);

表明我在 CGContextDrawLayerAtPoint 上花费的时间比在运行 OS 3.2 的设备上花费的时间更多的工具。事实上,堆栈跟踪表明以下堆栈跟踪占用了更高的时间百分比:

argb32_sample_argb32  
argb32_image_mark
argb32_image
ripl_Mark
ripl_BltImage
RIPLayerBltImage
ripc_RenderImage
ripc_DrawLayer
CGContextDelegateDrawlayer
CGContextDrawLayerAtPoint

而在 3.2 下运行的相同代码显示

argb32_image_mark_rgb32
argb32_image
ripl_Mark
ripl_BltImage
ripc_RenderImage
ripc_DrawLayer
CGContextDelegateDrawLayer
CGContextDrawLayerAtPoint

时间百分比要低得多。我不确定为什么 argb32_sample_argb32 在 iOS 4 上被调用以及它在做什么 - 将现有数据采样到新的缓冲区中?我不确定为什么这是必要的。 View 和位图大小相同,并且未执行缩放。

任何对此的见解将不胜感激。

最佳答案

好吧,没有人对此有任何见解,所以我将重述我们的理论以及我们最终所做的事情。理论上,由于 iOS 4 现在必须处理不同的屏幕分辨率,因此它采用了更“通用”的位 block 传输方法,并且效率比以前低了一些。

最后,这并不重要 - 它更慢,我们必须处理它。我们发现有些地方进行了冗余复制,因此我们能够减少必须进行的复制量。这为我们带来了所需的速度。

关于iphone - iOS 4.0 中 CGContext DrawLayerAtPoint 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134975/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com