【发布时间】:2010-08-02 11:57:00
【问题描述】:
如果我为我的 Default.png 图像使用未优化的 PNG,我要为启动性能支付多少费用?我意识到 Xcode 在将 PNG 复制到 .app 包中时会对其进行优化,但我正在执行一些构建时脚本并最终在那里使用常规 PNG。似乎运行良好,但我想确定。
【问题讨论】:
标签: iphone
如果我为我的 Default.png 图像使用未优化的 PNG,我要为启动性能支付多少费用?我意识到 Xcode 在将 PNG 复制到 .app 包中时会对其进行优化,但我正在执行一些构建时脚本并最终在那里使用常规 PNG。似乎运行良好,但我想确定。
【问题讨论】:
标签: iphone
我认为 Xcode 会优化 PNG 以使其尽可能小。这可能是通过互联网上免费提供的两个程序的组合来完成的:PNGcrush 和 AdvanceCOMP
这两个程序都会查看 PNG 文件,看看可以做些什么来使 PNG 变小;以不同方式生成的 PNG 文件(例如使用 Microsoft 绘制)可以正常工作(但请参阅下面的 iPhone 特定问题),但要大一些。 PNG 最初是在 1990 年代中期创建的,当时顶级的 Pentium 的性能甚至是最慢的 iPhone 的一小部分。它们总是会很快加载(除非它们是非常大的图像)。
Google 是你的朋友:一个简单的“xcode PNG 优化”Google 搜索显示 one person points out that iPhone’s PNG optimization affects the alpha component,因此 PNG 在最终应用程序中可能看起来有点不同。
另外,来自该博客条目:
当您使用任何其他文件类型(或者如果您加载未优化的 PNG 文件)时,您的 iPhone 必须在加载时执行字节交换和 alpha 预乘(并且可能在显示时重新执行 alpha 乘法时间)。您的应用程序基本上必须执行与 Xcode 相同的处理,但它是在运行时而不是在构建时执行的。就处理器周期和内存开销而言,这将给您带来成本。
所以,是的,对最终用户接触的任何东西都使用 xcode 优化,但其他构建对于开发人员和 SQA 测试人员来说都可以查看。
【讨论】:
为什么不在你复制到包中的图像上运行相同的 pngcrush XCode 呢?当然,这不会对性能造成巨大影响,但优化应用启动时间是您可以做的更有价值的事情之一。
【讨论】:
运行时代价是它将字节顺序从 RGBA 交换到 BGRA,并在所有像素上预乘 alpha。
如果只是您担心的 Default.png,那么性能问题并不是很明显。另一方面,如果您要加载大量 png 文件,明智的做法是提前处理这些文件,然后让 XCode 在复制文件构建阶段对其进行优化。
【讨论】: