valgrindでImageMagickのメモリの挙動を確認するを参考に、
ビルドコンフィグに --disable-hdri
を指定したものと、指定しなかったもので、サイズが6000x4000のjpeg画像をリサイズしたときのメモリ消費量を比較しました。
ついでにapt-getでインストールされるバージョン(ImageMagick 6.8.9-9 Q16
)も合わせてチェックします。
テストするコマンドは、Mastodonにメディアをアップロードした時のものに合わせています。
また、jpegファイルをリサイズする時、-define jpeg:size=WxH
でリサイズ後の大きさを指定すると高速&省メモリになるため、そちらも計測しました。
# 普通の
convert sample.jpg -auto-orient -quality 90 -resize 1280x1280 -strip out.jpg
# -define jpeg:sizeあり
convert -define jpeg:size=1280x1280 sample.jpg -auto-orient -quality 90 -resize 1280x1280 -strip out.jpg
|
-define jpeg:sizeなし |
-define jpeg:sizeあり |
--disable-hdriオプションなし |
347.5MB |
73.73MB |
--disable-hdriオプションあり |
87.22MB |
18.77MB |
ImageMagick 6.8.9-9 Q16 |
230.9MB |
49.09MB |
--disable-hdri
オプションを付けることによって、メモリ消費量は1/4になりました。float
が4byte, unsigned_char
が1byteなので、納得の行く結果です。
というか--disable-hdriオプションつけないとひどい…
ImageMagick 6.8.9-9 Q16
--------------------------------------------------------------------------------
Command: /usr/bin/convert sample.jpg -auto-orient -quality 90 -resize 1280x1280> -strip out.jpg
Massif arguments: (none)
ms_print arguments: massif.out.22665
--------------------------------------------------------------------------------
MB
230.9^ ########
| @::::::::::::::::::::::::::::::::::::::::::::# :
| @ # :
| @ # :
| @ # :
|@@@@@@@@@@@@@@@@@@ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
|@ @ # :
0 +----------------------------------------------------------------------->Gi
0 7.309
ImageMagick 6.8.9-9 Q16, -define jpeg:size
--------------------------------------------------------------------------------
Command: /usr/bin/convert -define jpeg:size=1280x1280 sample.jpg -auto-orient -quality 90 -resize 1280x1280> -strip out.jpg
Massif arguments: (none)
ms_print arguments: massif.out.22671
--------------------------------------------------------------------------------
MB
49.09^ ############
| # :
| # :
| # :
| ::::::::::::::::::::::::::# :
| : # :
| : # :
| : # :
| : # :
| : # :
| :::::::::::::::::::::::::::::@ # :
| : @ # :
| : @ # :
| : @ # :
| : @ # :
| : @ # :::
| : @ # : @
| : @ # @ @
| : @ # @ @
| : @ # @ @
0 +----------------------------------------------------------------------->Gi
0 2.173
enable-hdri
--------------------------------------------------------------------------------
Command: convert sample.jpg -auto-orient -quality 90 -resize 1280x1280 -strip out.jpg
Massif arguments: (none)
ms_print arguments: q8_hdri_on.out
--------------------------------------------------------------------------------
MB
347.5^ :::::::::
| #:::::::::::::::::::::::::::::::::::::::::::::::: :
| # : :
| # : :
| # : :
|@@@@@@@@@@@@@# : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
0 +----------------------------------------------------------------------->Gi
0 9.076
enable-hdri, -define jpeg:size=1280x1280
--------------------------------------------------------------------------------
Command: convert -define jpeg:size=1280x1280 sample.jpg -auto-orient -quality 90 -resize 1280x1280 -strip out.jpg
Massif arguments: (none)
ms_print arguments: q8_hdri_on_resize.out
--------------------------------------------------------------------------------
MB
73.73^ :::::::::::::::
| #:::::::::::::::::::::::::::: :
| # : :
| # : :
| # : :
| # : :
| # : :
| # : :
| # : :
| # : :
| @@@@@@@@@@@@@@@@@@@@@@@@# : :
| @ # : :
| @ # : :
| @ # : :
| @ # : :
| @ # : :
| @ # : ::::
| @ # : : :
| @ # : : :
| @ # : : :
0 +----------------------------------------------------------------------->Gi
0 2.641
--disable-hdri
--------------------------------------------------------------------------------
Command: convert sample.jpg -auto-orient -quality 90 -resize 1280x1280 -strip out.jpg
Massif arguments: (none)
ms_print arguments: q8_no_hdri.out
--------------------------------------------------------------------------------
MB
87.22^ ::::::::::
| #:::::::::::::::::::::::::::::::::::::::::::::::: :
| # : :
| # : :
| # : :
|@@@@@@@@@@@@@# : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
|@ # : :
0 +----------------------------------------------------------------------->Gi
0 9.058
--disable-hdri, -define jpeg:size=1280x1280
--------------------------------------------------------------------------------
Command: convert -define jpeg:size=1280x1280 sample.jpg -auto-orient -quality 90 -resize 1280x1280 -strip out.jpg
Massif arguments: (none)
ms_print arguments: q8_no_hdri_resize_on.out
--------------------------------------------------------------------------------
MB
18.77^ ::::::::::::::::
| #::::::::::::::::::::::::::::: :
| # : :
| # : :
| # : :
| # : :
| # : :
| # : :
| # : :
| # : :
| @@@@@@@@@@@@@@@@@@@@@@@# : :
| @ # : :
| @ # : ::
| @ # : :
| @ # : :
| @ # : : :
| @ # : : :
| @ # : : :
| @ # : : :
| @ # : : :
0 +----------------------------------------------------------------------->Gi
0 2.700