简而言之问题
最近几周我一直在构建一个 IOS 应用程序并遇到了一些麻烦。该应用程序通过每秒多次操作然后绘制图像光栅来播放动画。图像是通过将其分配给一个UIViews
CALayer
like来绘制的,因此self.layer.contents = (id)pimage.CGImage;
计算和渲染是分开在两个CADisplayLink
s中的。
这种动画技术在 iPhone 6.1 模拟器上实现了令人满意的性能,但是当它在物理设备(运行 IOS 6.1.3 的 Iphone 4s)上构建时,它会经历显着的减速。减速是如此糟糕,以至于它实际上使应用程序无法使用。
疑似问题
我读过,在iOS 设备和 iPhone 模拟器之间的内存组织的这个问题中,模拟器允许使用比实际设备更多的内存。但是,在“仪器”中观察我的应用程序内存使用情况时,我注意到总内存使用量从未超过 3Mbs。所以我不确定这是否真的是问题,但可能值得指出。
根据这个问题,iOS-Simulator 是否使用多个内核?,IOS模拟器运行英特尔芯片,而实际我的设备使用苹果A5芯片。我怀疑这也可能是放缓的原因。
我正在考虑在 Open GL 中重写动画,但是我首先想尝试改进现有代码,然后再采取任何激烈的步骤。
任何帮助确定问题所在将不胜感激。
更新
感谢所有提供建议的人。我在分析时发现主要瓶颈实际上是为下一个动画清除图像光栅。我决定用opengl重写动画的渲染。并没有预期的那么长。该应用程序现在达到了相当不错的性能水平并且更简单了一些。