【问题标题】:Horrific libPNG performance on iOSiOS 上可怕的 libPNG 性能
【发布时间】:2012-05-25 12:40:44
【问题描述】:

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

我在 Cocos2D 论坛中发现的几件事让我相信这是 iOS 上的 zlib 实现的问题,但我尝试同时使用 stb_image 和 LodePng 来避免使用 zlib,而这些库的性能实际上比 libPNG 还要糟糕!

是否有一些特殊的方法可以为 iOS“正确”构建 libPNG?如果不是,那么 libPNG 在 iOS 上的 SO 会慢得多吗?为什么 stb_image 也会变慢/变慢?有没有已知的方法来解决或纠正这个问题?

谢谢, 自动对焦

【问题讨论】:

  • 您可以在 iOS 和 OS X 上使用 CoreGraphics 来加载 PNG 图像。基本过程是使用CGImageCreateWithPNGDataProvider 加载PNG,然后创建位图上下文(CGBitmapContextCreate)并将PNG 绘制到位图上下文中。这样您就可以完全避免使用 LibPNG。
  • 您能否主要测量 iOS 设备上较慢的文件系统带宽?将大型位图输入 GPU 进行显示也存在 iOS 设备带宽限制,因操作系统版本和设备型号而异。
  • 它与 gpu 无关,只是将 .png 从一个内存缓冲区解压缩到另一个使用。一直吃的具体函数是“png_read_image()”。
  • 即使找到了解决方法,也值得知道答案。谁知道它还会影响什么?
  • FWIW 我最终使用“CGBitmapContextCreate()”在 iOS 上解压缩内存中的 .png 文件。

标签: android c++ ios png libpng


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 2012-09-12
    • 2011-01-24
    • 2017-05-15
    • 1970-01-01
    • 2018-03-22
    • 2013-09-10
    相关资源
    最近更新 更多