可以加快php / imagick中的图像加载速度

时间:2015-12-03 15:27:34

标签: php imagemagick imagick

我注意到在php中将图像加载到imagick($im = new Imagick($sFilename);)中需要0.6秒才能获得8MB图像。这对我来说似乎有点慢,所以我尝试了一个测试并使用file_get_contents来读取文件。大约0.005秒。更好。有点太好了,我想那里有一些缓存?

但我可以将相同的文件加载到想象中十几次,它总是~0.6秒。

我可以告诉file_get_contents以某种方式绕过系统缓存,让我更好地了解从硬盘驱动器中检索8MB文件的原始速度吗?

有什么方法可以加快想象力吗?或者0.6秒这个操作完全正常吗?

服务器在RAID 1中有两个7200rpm HP sata驱动器。

感谢。

1 个答案:

答案 0 :(得分:1)

  

有什么方法可以加快想象力吗?

购买更快的CPU

  

或者这个操作完全正常是0.6秒吗?

  

这对我来说似乎有点慢

     

但似乎很长一段时间。

     

我想那里有一些缓存?

你只是猜测某事应该更快.....并且你将它与完全不同的操作进行比较。 file_get_contents只是从磁盘中读取文件中的字节。从JPG创建图像意味着计算机必须从磁盘读取字节,然后将它们从压缩数据解码为实际图像数据。

如果你想看看在压缩过程中需要做多少工作,你可以通过以未压缩的格式写出图像来轻松地看到这一点,例如

$imagick = new Imagick("./testImage.jpg");
$imagick->setImageFormat('BMP');
$imagick->writeImage("./output.bmp");

是的,这比HTTP请求进行处理的时间长。这也是为什么不在网络服务器中运行Imagick的另一个原因是一个好主意,而是将其作为后台任务运行。