Get the width and height from images

Smartyって画像サイズを自動的に<img />に埋め込んだりするんですね。
というわけで、Perlで画像サイズを得るのに何が速いかベンチマークしてみました。
結果:

Image::Info/1.30
Image::Size/3.221
Imager/0.75
GD/2.45
               Rate          GD      Imager Image::Info Image::Size
GD           77.2/s          --        -69%        -79%       -100%
Imager        251/s        226%          --        -32%        -99%
Image::Info   368/s        377%         47%          --        -99%
Image::Size 37959/s      49074%      15002%      10203%          --

Image::Sizeがその他のモジュールよりも100倍以上の差をつけています。サイズを取るだけならpure PerlであるImage::Size以外の選択肢を考える必要はなさそうですね。
スクリプト:

#!perl -w
use strict;
use Benchmark qw(:all);
use Image::Info qw(image_info dim);
use Image::Size qw(imgsize);
use Imager;
use GD;

use FindBin qw($Bin);

foreach my $mod(qw(Image::Info Image::Size Imager GD)) {
    print "$mod/", $mod->VERSION, "\n";
}

if(0) {
    use Data::Dumper;
    print "Image::Info: ", Dumper [ dim(image_info("$Bin/viola.jpg")) ];
    print "Image::Size: ", Dumper [ imgsize("$Bin/viola.jpg") ];

    my $im = Imager->new(file => "$Bin/viola.jpg") or die Imager->errstr;
    print "Imager: ", Dumper [ $im->getwidth, $im->getheight ];

    my $gd = GD::Image->new("$Bin/viola.jpg");
    print "GD: ", Dumper [$gd->width, $gd->height];
}

cmpthese -1, {
    'Image::Info' => sub {
        my($w, $h) = dim(image_info("$Bin/viola.jpg"));
     },
    'Image::Size' => sub {
        my($w, $h) = imgsize("$Bin/viola.jpg");
     },
    'Imager' => sub {
        my $im = Imager->new(file => "$Bin/viola.jpg");
        my($w, $h) = ( $im->getwidth, $im->getheight);
     },
    'GD' => sub {
        my $im = GD::Image->new("$Bin/viola.jpg");
        my($w, $h) = ( $im->width, $im->height);
     },
};