GDとImageMagickの速度を比較してみた
■GD
以下のようなコードを用いてGDで合成画像を1000枚生成した時の時間を調べた。
$layers = array(
0 => 'dress_back.png',
1 => 'dress_back.png',
2 => 'body.png',
3 => 'dress.png',
4 => 'bag.png',
5 => 'bag.png',
6 => 'face.png',
7 => 'hear.png',
8 => 'teara.png',
);
$start = microtime(true);
for($i = 0; $i < 10; $i++){
$image = imagecreatefrompng("background.png");
foreach($layers as $key => $value){
$layer = imagecreatefrompng($value);
imagecopy($image, $layer, 0, 0, 0, 0, 410, 454);
}
imagegif($image, "image{$i}.gif");
}
$end = microtime(true);
print($end - $start);
/*
* windows
* 10 => 0.27269101142883
* 100 => 2.1620790958405
* 1000 => 24.812913894653
*
* linux
* 10 => 0.21701502799988
* 100 => 2.1362149715424
* 1000 => 21.695859193802
*/
■ImageMagic
以下のようなコードを用いてImageMagickで合成画像を1000枚生成した時の時間を調べた。
$layers = array(
0 => 'dress_back.png',
1 => 'dress_back.png',
2 => 'body.png',
3 => 'dress.png',
4 => 'bag.png',
5 => 'bag.png',
6 => 'face.png',
7 => 'hear.png',
8 => 'teara.png',
);
set_time_limit(0);
//$path = 'C:\xampp\htdocs\local.sample.org\public_html\\';
$path = '/home/local.sample.org/trunk/public_html/imagick/';
$start = microtime(true);
for($i = 0; $i < 1000; $i++){
$image = new Imagick("{$path}background.png");
foreach($layers as $key => $value){
$layer = new Imagick($path . $value);
$image->compositeImage($layer, $layer->getImageCompose(), 0, 0);
}
$image->writeImage("{$path}image{$i}.gif");
}
$end = microtime(true);
print($end - $start);
/*
* windows
* 10 => 2.2297260761261
* 100 => 24.065160989761
* 1000 => 247.36853098869
*
* linux
* 10 => 0.33637809753418
* 100 => 3.3278291225433
* 1000 => 33.274304866791
*/
■結果
Linuxの場合は1.5倍ImageMagickが遅かった。Windowsの場合は10倍ImageMagickが遅かった。
TrackBack URL :
Comments (2)