我注意到在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驱动器。
感谢。
答案 0 :(得分:1)
有什么方法可以加快想象力吗?
购买更快的CPU
或者这个操作完全正常是0.6秒吗?
是
这对我来说似乎有点慢
但似乎很长一段时间。
我想那里有一些缓存?
你只是猜测某事应该更快.....并且你将它与完全不同的操作进行比较。 file_get_contents只是从磁盘中读取文件中的字节。从JPG创建图像意味着计算机必须从磁盘读取字节,然后将它们从压缩数据解码为实际图像数据。
如果你想看看在压缩过程中需要做多少工作,你可以通过以未压缩的格式写出图像来轻松地看到这一点,例如
$imagick = new Imagick("./testImage.jpg");
$imagick->setImageFormat('BMP');
$imagick->writeImage("./output.bmp");
是的,这比HTTP请求进行处理的时间长。这也是为什么不在网络服务器中运行Imagick的另一个原因是一个好主意,而是将其作为后台任务运行。