加速/减少CPU负载以在Swift

时间:2017-09-17 18:49:57

标签: ios swift performance bitmap

我必须在Swift中绘制一个瀑布图,我使用的是位图上下文,它的更新速度非常快,大约每秒20行,所有我有大约400行显示 - 全宽。

目前我的CPU负载大约是100%,我想知道,如果有更好的方法,那么可以降低CPU负载。

func draw2(pixel:[rgba],width:Int,height:Int) -> UIImage
{   let colorSpace = CGColorSpaceCreateDeviceRGB()

    var data = UnsafeMutableRawPointer(mutating: pixel)

    let bitmapContext = CGContext(data: data,
                                  width: width,
                                  height: height,
                                  bitsPerComponent: 8,
                                  bytesPerRow: 4*width,
                                  space: colorSpace,
                                  bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)


    let image = bitmapContext?.makeImage()

    return UIImage(cgImage: image!)

}

非常感谢你的共同点

1 个答案:

答案 0 :(得分:0)

根据您的说法,您应该能够缓存图像,并且每次只能绘制增量线。您需要保留一个类参数来存储您的图像:

var cachedImage : UIImage?

每次调用绘图功能时,请执行以下操作:

  1. 使用UIImage.draw(in:CGRect)绘制缓存的图像(如果它存在,在第一次运行时它当然不会)(参见https://developer.apple.com/documentation/uikit/uiimage/1624092-draw)。

  2. 绘制新路径。

  3. 将结果保存回cachedImage。

  4. 在每次绘制迭代时,您显然希望将矩形移动一个像素,并初始化上下文以为新行腾出空间。

    希望有所帮助。