Ich betreibe einen kleinen Benchmark. Gleicher einfacher Textzeichnungsvorgang mit GD und ImageMagick Siehe Code unten.ImageMagic für PHP langsam im Vergleich zu GD
Auf dem Dev-Server läuft die GD-Version in 1,9 Sekunden und die ImageMagic in 7,3 Sekunden. Dies ist über mehrere Tests hinweg konsistent.
Unter Linux die GD ver läuft in 2,5 sec und IM in 4 sec
(beide einschließlich roundtip aber die Tests wurden mehrere Zeit auf dem gleichen Server/Client und seine konsequente getan) Was IM langsamer als GD macht? Gibt es eine Möglichkeit, es zu optimieren? Was kann ich tun, um die gleiche Leistung zu erzielen?
Benchmark Code 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);
Benchmark-Code 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 Info
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 Info
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
Keine Ahnung, ob es einen Unterschied macht, aber vielleicht versuchen Sie zuerst all Ihre 'Arial'-Schriftarten, dann all Ihre' Arib'-Sachen, anstatt die Schriftarten zu ändern und Schriftdateien zu lesen. Nur ein Tipp - nicht getestet. Übrigens läuft die IM-Version in 1.9s auf meinem Mac mit v6.9 –