gpt4 book ai didi

ios - IOS模拟器和Iphone之间的重大应用程序性能差异

转载 作者:行者123 更新时间:2023-12-01 19:10:23 26 4
gpt4 key购买 nike

概括地说是问题

我最近几周一直在构建IOS应用程序,但遇到了一些麻烦。该应用程序是通过操纵动画然后每秒多次绘制图像光栅来播放动画的。通过将图像分配给UIViews来绘制图像像这样CALayer self.layer.contents = (id)pimage.CGImage;将计算和渲染分为两个CADisplayLink

这种动画技术在IPhone 6.1模拟器上实现了令人满意的性能,但是当它在物理设备(运行IOS 6.1.3的Iphone 4s)上构建时,它的运行速度会大大降低。放慢速度是如此糟糕,以至于实际上使应用程序无法使用。

疑似问题

我已经读过Difference of memory organization between iOS device and iPhone simulator这个问题,它允许模拟器使用比实际设备更多的内存。但是,在“仪器”中观察我的应用程序的内存使用情况时,我注意到总内存使用情况从未超过3Mbs。因此,我不确定这是否确实是问题所在,但可能值得指出。

根据这个问题Does the iOS-Simulator use multiple cores?,IOS模拟器运行intel芯片,而实际上我的设备使用的是Apple A5芯片。我怀疑这也可能是经济放缓的原因。

我正在考虑在Open GL中重写动画,但是我想先采取一些尝试,然后再尝试改进现有代码。

在确定问题出在什么方面的任何帮助将不胜感激。

更新

感谢所有提供建议的人。
我在分析时发现主要瓶颈实际上是在清除下一个动画的图像栅格。我决定重写opengl中的动画渲染。它并没有花费预期的时间。该应用程序现在可以达到相当不错的性能水平,并且更加简单。

最佳答案

这是一个经典的问题。模拟器正在使用您的高性能工作站/笔记本电脑的资源。

不幸的是,唯一的解决方案是返回并优化代码,尤其是显示内容。

通常,您希望尝试从计算时间中最小化绘制时间,这听起来像您正在做的那样,但是请确保不要在主线程上进行计算。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
// Do the computation
});

您可以在设备上运行时使用仪器,因此CoreGraphics仪器可随时查看正在使用的内容并指向有问题的代码。不幸的是,您可能已经知道它是什么,并且将归结为优化。

关于ios - IOS模拟器和Iphone之间的重大应用程序性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947342/

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