想象力的绩效问题

时间:2011-01-17 11:15:55

标签: php performance imagick

我想用来制作带角落的缩略图。

以下是有趣的内容:

$background = 'white';
$image->cropThumbnailImage($width,$height);
$im = new Imagick(); 
$im->newImage($width, $height, $background); 
//$image->sharpenImage(50, 1); 
$image->roundCorners( $cornersSize, $cornersSize);
$im->compositeImage($image, Imagick::COMPOSITE_OVER, 0, 0); 
$im->setImageFormat('jpeg');
$im->flattenImages(); 
$image = $im;

服务器上需要10秒才能创建它!

在小型笔记本电脑上,需要1.5秒(仍然很慢)。

我们如何才能改善这一点?

精密工业:

我只用一张图片重新启动代码:20148px x 1222px。笔记本电脑上10秒钟,服务器上20秒钟。

服务器:

笔记本电脑:

  • php5-imagick:3.0.0~rc1-1build1
  • imagemagick:7:6.6.2.6-1ubuntu1.1
  • ubuntu 10.10
  • 2048mo RAM 1333MHz DDR3
  • 英特尔酷睿i3-370M 2,4GHz,3MB

服务器:

  • Intel Xeon(16 Mo Cache)
  • 8Go RAM(RDIMM)
  • 没有网站在线。

2 个答案:

答案 0 :(得分:2)

如果您的服务器是Ubuntu 10.04 / Debian 6,使用Viruozzo,或者其他虚拟化平台,或者只是多处理器系统,这可能是ImageMagick的OpenMP支持的错误。

在theese平台上使用imagick PHP扩展,Imagemagick可能会很慢。制作简单的图像需要几秒而不是几毫秒。

对我有用的解决方案: http://tellgren.com/blog/2011/03/24/trouble-with-imagemagick-on-vps/

答案 1 :(得分:0)

虽然您可以使用GPU进行某些处理,但在这种情况下不会使用它。只有你的CPU。

您似乎正在做一些不必要的步骤。这有什么问题:

$image->cropThumbnailImage($width,$height);
$image->roundCorners( $cornersSize, $cornersSize);