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

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

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

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

有什么办法可以加速想象力吗? 或者这个操作完全正常是0.6秒?</ p>

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

谢谢。</ p>

</ div>

展开原文

原文

I've noticed that loading an image into imagick ($im = new Imagick($sFilename);) in php is taking 0.6 seconds for an 8MB image. This seems a bit slow to me, so I tried a test and read the file in using file_get_contents instead. About 0.005 seconds. Better. A bit too good tbh, I guess there's some caching going on there?

But I can load the same file a dozen times into imagick and it's always ~0.6 seconds.

Can I tell file_get_contents to bypass the system cache somehow, to give me a better idea of the raw speed with which an 8MB file can be retrieved from my hard drives?

Is there anything that can be done to speed up imagick? Or is 0.6 seconds for this operation completely normal?

The server has two 7200rpm HP sata drives in RAID 1.

Thanks.

dongwu9972
dongwu9972 为什么你认为0.6很长时间才能将特定图像读入imageMagic?你有没有把它比作什么?
接近 5 年之前 回复
doumei9832
doumei9832 JPG,6000x4000,CentOS6.7,XeonE5-1650,32GBRAM。两者-有时是一张图像,有时是数千张。
接近 5 年之前 回复
dongyue3795
dongyue3795 什么是图像类型-JPG?PNG?像素的尺寸是多少?你实际上想要实现什么-快速处理一个图像,或者在很短的时间内完成大量图像?你在Windows上吗?
接近 5 年之前 回复
dsfvsdfv23599
dsfvsdfv23599 我确实很奇怪,但似乎很长一段时间。有没有什么可以配置给想象更多的资源?将其设置为“高优先级”CPU任务或其他什么?或者启用多核处理等?
接近 5 年之前 回复
doukong5394
doukong5394 这不是文件读取需要很长时间,而是将8MB图像解码为位图,可能非常大。
接近 5 年之前 回复
doupu1727
doupu1727 我认为Imagick较慢的原因是因为它在加载图像时会进行一些解析。解析8MB的数据需要一些时间。
接近 5 年之前 回复

1个回答




有什么方法可以加快想象力吗?</ p>
</ blockquote> \ n

购买更快的CPU </ p>


或者此操作完全正常为0.6秒?</ p>
</ blockquote>

是。</ p>


这对我来说似乎有点慢</ p>

但似乎很长一段时间。</ p>

我想那里有一些缓存?</ p>
</ blockquote>

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

如果要查看如何 在压缩过程中必须完成很多工作,你可以通过以非压缩格式写出图像来轻松看到这一点,例如</ p>

  $ imagick = new Imagick(“./ testImage。  JPG “); 
$的imagick-&GT; setImageFormat( 'BMP');
$的imagick-&GT; writeImage(” ./ output.bmp“);
</代码> </ PRE>

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

展开原文

原文

Is there anything that can be done to speed up imagick?

Buy a faster CPU

Or is 0.6 seconds for this operation completely normal?

Yes.

This seems a bit slow to me

but it seems a long time for that.

I guess there's some caching going on there?

You're just guessing that something should be faster.....and you'r comparing it to a completely different operation. file_get_contents just reads the bytes in the file off the disk. Creating an image from a JPG means the computer has to read the bytes off the disk, and then decode them from the compressed data to be the actual image data.

If you want to see how much work has to be done during the compression, you can easily see this by writing the image out in an uncompressed format e.g.

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

And yes, this is longer than is reasonable for a HTTP request to take processing. Which is just another reason for why not running Imagick in a webserver is a good idea, but to instead run it as a background task.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐