【发布时间】:2013-08-10 18:37:39
【问题描述】:
我有一些 PHP 代码可以处理大量 .PNG 图像,将它们逐个像素地组合在一起(所以有很多 ìmagecolorat 调用)。其中一些图像可能会发生变化,但有一些是预先计算好的,很少发生变化。
预计算的图像由 GD 生成,并在 PHP 中使用imagepng 输出。
由于它们的阅读频率远高于编写频率,因此我想优化它们以提高阅读速度。
但是imagepng 的哪种质量设置最能优化imagecreatefrompng 中的读取性能?
更高的压缩率和过滤器会创建更小的文件,但也许没有压缩或过滤器的更大文件读取速度更快?
也许最好完全跳过 PNG 文件并使用原始的、未压缩的二进制文件或可以读入 PHP 数组的东西?
【问题讨论】:
-
我认为差异很小...我建议您创建临时脚本并测量时间。否则,您需要找到其他解决方案,例如使用比 PHP 更快的其他语言
-
我想您知道您可以使用
imagecopy*()函数复制整个图像或部分图像。使用图像魔法也应该会产生更好的性能,因为所有像素的东西都是用 C 编码的。但这取决于你对像素的实际操作。 -
额外的压缩级别可能会占用少量额外的 CPU 时间,但您必须平衡它与系统其余部分的开销。例如也许你节省了 5% 的磁盘带宽,但多消耗了 50% 的 CPU。没有办法正确回答这个问题:对各种方法进行基准测试,看看哪种方法最适合您。
-
GD 库始终在内存中保存未压缩的图像数据。压缩和解压缩图像数据应该只占 CPU 时间的一小部分,但您始终可以将图像保存为 GD 原生格式。
-
如预期的那样。您只能优化“像素推送”本身,但尚未发布任何细节。
标签: php performance png gd