Iphone 32GB机型上的iPod应用程序运行速度低于8GB机型

Iphone 32GB机型上的iPod应用程序运行速度低于8GB机型,iphone,performance,ipod-touch,Iphone,Performance,Ipod Touch,我在第三代32GB iPod touch机型上有一个很大的性能问题 该应用程序是DS 3D游戏的一个端口。渲染是使用OpenGL ES 1.1完成的。它将OpenAL用于音频,将MPMoviePlayerController用于视频 8GB iPod touch的性能很好,持续运行的速度超过30 fps。然后,我在第三代32GB机型上测试了它,并震惊于它的速度有多慢。我注意到的第一个问题是简介剪贴画。这段视频被分割成碎片,画面被跳过 在3D级别,性能约为15 fps。场景在静态顶点缓冲区中有大约

我在第三代32GB iPod touch机型上有一个很大的性能问题

该应用程序是DS 3D游戏的一个端口。渲染是使用OpenGL ES 1.1完成的。它将OpenAL用于音频,将MPMoviePlayerController用于视频

8GB iPod touch的性能很好,持续运行的速度超过30 fps。然后,我在第三代32GB机型上测试了它,并震惊于它的速度有多慢。我注意到的第一个问题是简介剪贴画。这段视频被分割成碎片,画面被跳过

在3D级别,性能约为15 fps。场景在静态顶点缓冲区中有大约10000个顶点,在动态顶点缓冲区中有7000个顶点。动态顶点会在每一帧更新,不是全部更新,而是在骨架动画的最后一帧中更改的部分更新

我毫不费力地玩了构建设置、拇指开/关、针对armv7进行了优化等等。在8GB机型上,它的运行速度非常快,而在32GB机型上,它的运行速度很差

然后,我在32GB型号的应用商店(N.O.V.A)上尝试了另一款3D游戏。它运行的性能很好,视频也很好

现在我的想法到此为止了

谁能给我一个提示,问题出在哪里

谢谢你的问候
温柔的

有三代iPodtouch,最新一代的规格与iPhone3GS相似,最值得注意的是,它的内存增加了一倍,GPU速度更快,GPU性能比第一代或第二代要好得多


您正在比较不同的硬件,因为从来没有8GB的第三代机型。因此,您的代码会使它在较新的硬件上运行得更差,这实际上是非常令人惊讶的。我的猜测是:它与GPU有关。

第二代iPod touch有一个GPU,本机运行OpenGLES1.1

iPodtouch第三代有一个GPU,它本机运行OpenGLES2.0,速度更快,但通过将OpenGLES1.1指令转换为OpenGLES2.0指令来运行。您的应用程序可能使用1.1指令,而GPU驱动程序很难使用2.0指令进行仿真


注:这是一个简化的解释

哪一代是8GB型号?是的,我知道8GB ipod touch从来没有第三代型号。这就是我非常惊讶的地方,它在第二代车型上比在第三代车型上运行得更快。你是说它和GPU有关,但我用的是普通的OpenGL ES。它也不能解释为什么8GB型号(较慢的GPU)上的速度如此之快。没有显示更多的代码,我们就没有什么可以推测的了。好吧,我用仪器向我展示了32Gb型号上昂贵的进程。它告诉我,我的UpdateDynamicVertexBuffer()需要的时间最多,但仅在第三代机型上。我在这个方法中所做的是:我有一个大的动态顶点缓冲区,它保存所有必须更新的顶点,因为它们是动画的。对于每个网格,我穿过顶点并用变换矩阵将它们相乘。然后,我用glBufferSubData将修改后的顶点上传到图形卡。这似乎在某种程度上延缓了渲染过程。有什么解决办法吗?