2016-08-19 13 views
0

小さなベンチマークを実行します。 GDとImageMagickを使った簡単なテキスト描画操作以下のコードを参照してください。ImageMagic for PHPはGDに比べて遅い

devサーバでは、GDバージョンは1.9秒で、ImageMagicは7.3秒で実行されます。これは、複数のテストにわたって一貫しています。

はLinuxでは4秒で2.5秒で実行され、IM版GD IMはGDよりも遅くなり何

(両方を含むroundtipが、テストでは、同じサーバ/クライアントとその一貫性の上に複数の時間を行われましたか)?それを最適化する方法はありますか同じパフォーマンスを得るために何ができますか?

ベンチマークコードGD:

$base_image=imagecreatetruecolor (350, 700); 

$white = imagecolorallocatealpha($base_image, 255, 255, 255, 100); 
imagefill($base_image , 0, 0, $white); 

imagealphablending($base_image, true); 
imagesavealpha($base_image, true); 


$black = imagecolorallocatealpha ($base_image, 0,0,0, 1); 

for ($i =0; $i<700; $i ++) { 

imagettftext($base_image, 13, 0, 20, $i, $black, './arial.ttf', "Hello World!"); 

imagettftext($base_image, 13, 0, 20, $i, $black, './arib____.ttf', "Hello World!"); 

imagettftext($base_image, 13, 0, 20, $i, $black, './verdana.ttf', "Hello World!"); 

imagettftext($base_image, 13, 0, 20, $i, $black, './trebuc.ttf', "Hello World!"); 

imagettftext($base_image, 13, 0, 20, $i, $black, './georgia.ttf', "Hello World!"); 

} 


header("Content-Type: image/png"); 
imagepng($base_image); 

ベンチマークコードのIM:

$canvas = new Imagick(); 

$canvas->newImage(350, 700, "white"); 

$draw = new ImagickDraw(); 



$draw->setFontSize(13*96/72); 

for ($i =0; $i<700; $i ++) {  

$draw->setFont('./arial.ttf'); 
$draw->annotation(20, $i, "Hello World!"); 

$draw->setFont('./arib____.ttf'); 
$draw->annotation(20, $i, "Hello World!"); 

$draw->setFont('./verdana.ttf'); 
$draw->annotation(20, $i, "Hello World!"); 

$draw->setFont('./trebuc.ttf'); 
$draw->annotation(20, $i, "Hello World!"); 

$draw->setFont('./georgia.ttf'); 
$draw->annotation(20, $i, "Hello World!"); 

} 

$canvas->drawImage($draw); 

$canvas->setImageFormat('png'); 
header("Content-Type: image/png"); 
echo $canvas; 

GD情報

GD Support enabled 
GD Version 2.1.1-dev 
FreeType Support enabled 
FreeType Linkage with freetype 
FreeType Version 2.5.2 
GIF Read Support enabled 
GIF Create Support enabled 
JPEG Support enabled 
libJPEG Version 8 
PNG Support enabled 
libPNG Version 1.2.50 
WBMP Support enabled 
XPM Support enabled 
libXpm Version 30411 
XBM Support enabled 
WebP Support enabled 

Imagick情報

imagick module enabled imagick module version 3.1.2 imagick classes Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator ImageMagick version ImageMagick 6.7.7-10 2016-06-01 Q16 http://www.imagemagick.org ImageMagick copyright Copyright (C) 1999-2012 ImageMagick Studio LLC ImageMagick release date 2016-06-01 ImageMagick number of supported formats: 204 ImageMagick supported formats 3FR, A, AAI, AI, ART, ARW, AVI, AVS, B, BGR, BGRA, BIE, BMP, BMP2, BMP3, BRF, C, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DCM, DCR, DCX, DDS, DFONT, DNG, DPX, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, FAX, FITS, FRACTAL, FTS, G, G3, GIF, GIF87, GRADIENT, GRAY, GROUP4, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, ICB, ICO, ICON, INFO, INLINE, IPL, ISOBRL, J2C, J2K, JBG, JBIG, JNG, JP2, JPC, JPEG, JPG, JPX, K, K25, KDC, LABEL, M, M2V, M4V, MAC, MAP, MAT, MATTE, MEF, MIFF, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MTV, MVG, NEF, NRW, NULL, O, ORF, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, R, RADIAL-GRADIENT, RAF, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, SR2, SRF, STEGANO, SUN, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMV, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, Y, YCbCr, YCbCrA, YUV 

Directive Local Value Master Value imagick.locale_fix 0 0 imagick.progress_monitor 0 0 
+0

違いがあるのか​​どうかは考えられませんが、フォントを変更してフォントファイルを読み込むのではなく、すべての 'arial'フォントの内容を最初に行い、次にすべての' arib'ものを試してみてください。ちょうど推測 - テストされていません。ちなみに、IMのバージョンはv9.9のMacで1.9秒で動作します –

答えて

0

ビット深度= 16を使用したIMとビット深度= 8のGDで動作している可能性があります。あなたはそれでいる間、代わり

$draw -> setImageDepth (8); 

を試してみて、あなたのサーバーを管理している場合は、あなたが今持っていることを造る「Q16」の代わりにImageMagickのの「Q8」ビルドをインストールしてみてください(と、取得ImageMagickの現在のバージョン; 6.7.7は非常に古いです)。

関連する問題