Android iOS上糟糕的libPNG性能

Android iOS上糟糕的libPNG性能,android,c++,ios,png,libpng,Android,C++,Ios,Png,Libpng,我目前正在使用开源libPNG库来读取和解压缩位图。它在Android、OS X和Win32上运行良好,但由于某些原因,在iOS设备上的运行速度要慢30倍。所有平台上都使用相同的libPNG源代码树(未修改) 我在Cocos2D论坛上发现的几件事让我相信这是iOS上zlib实现的一个问题,但我已经尝试使用stb_image和LodePng来避免zlib,而那些库的性能实际上比libPNG还要差 是否有一些特殊的方法可以“正确”为iOS构建libPNG?如果不是的话,那么libPNG在iOS上做什

我目前正在使用开源libPNG库来读取和解压缩位图。它在Android、OS X和Win32上运行良好,但由于某些原因,在iOS设备上的运行速度要慢30倍。所有平台上都使用相同的libPNG源代码树(未修改)

我在Cocos2D论坛上发现的几件事让我相信这是iOS上zlib实现的一个问题,但我已经尝试使用stb_image和LodePng来避免zlib,而那些库的性能实际上比libPNG还要差

是否有一些特殊的方法可以“正确”为iOS构建libPNG?如果不是的话,那么libPNG在iOS上做什么会慢得多?为什么机顶盒图像也会变慢/变慢?是否有解决或纠正此问题的已知方法

谢谢,
AF

您可以尝试重建zlib,这可能会解决您的问题。
如果没有,请尝试寻找一些支持PNG的流行开源iOS应用程序,这些应用程序可能已经解决了这个问题。您甚至可以在他们的论坛上发布。

您可以在iOS和OS X上使用CoreGraphics加载PNG图像。基本过程是使用
CGImageCreateWithPNGDataProvider
加载PNG,然后创建位图上下文(
cgitmapcontextcreate
),并将PNG绘制到位图上下文中。通过这种方式,您可以完全避免LibPNG。您是否可以主要测量iOS设备上较慢的文件系统带宽?在将大型位图放入GPU进行显示时,也有一个iOS设备带宽限制,这取决于操作系统版本和设备型号。它与GPU无关,只是使用将.png从一个内存缓冲区解压缩到另一个内存缓冲区。一直在使用的特定函数是“png\u read\u image()”。即使找到了解决方法,也值得知道答案。谁知道它还会影响什么呢?FWIW我最后使用“CGBitmapContextCreate()”在iOS上解压内存中的.png文件。