スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UUID 生成のベンチマーク

uuidの生成の仕方はどれがいいのかな、という訳で色々ベンチとってみた。

APR::UUIDとData::UUIDの比較

my $du = Data::UUID->new;
cmpthese(100000, {
    'APR::UUID' => sub { APR::UUID->new->format;},
    'Data::UUID' => sub { $du->create_str(); },
});

              Rate  APR::UUID Data::UUID
APR::UUID  86207/s         --       -12%
Data::UUID 98039/s        14%         --
Data::UUIDの方がちょっと速い。

Data::UUIDでも毎回newするとかなり悲惨

cmpthese(100000, {
    'Data::UUID new each' => sub { Data::UUID->new->create_str(); },
    'Data::UUID' => sub { $du->create_str(); },
});
                       Rate Data::UUID new each          Data::UUID
Data::UUID new each  1176/s                  --                -99%
Data::UUID          96154/s               8076%                  --

APR::UUIDをbase64_urlsafeしたものと生文字列で生成したものの比較

sub uuid_compact {
    my $uuid = APR::UUID->new->format;
    my $packed = pack("H8H4H4H4H12", split('-', $uuid));
    return urlsafe_b64encode($packed);
}

cmpthese(100000, {
    'APR::UUID' => sub { APR::UUID->new->format;},
    'APR::UUID compact' => sub { uuid_compact(); },
});

                     Rate APR::UUID compact         APR::UUID
APR::UUID compact 32680/s                --              -61%
APR::UUID         83333/s              155%                --
半分くらい遅くなるのだな。

base64_urlsafeなuuidをAPR::UUIDとData::UUIDで作った場合の比較

cmpthese(100000, {
    'APR::UUID compact' => sub { uuid_compact(); },
    'Data::UUID compact' => sub { $dub64->create_b64_urlsafe(); },
});

                      Rate  APR::UUID compact Data::UUID compact
APR::UUID compact  32787/s                 --               -59%
Data::UUID compact 80000/s               144%                 --
Data::UUIDの方はあまり遅くならない。

結論

使えるならData::UUIDを使った方が良さげ。
スポンサーサイト

この記事のトラックバックURL

http://saltyduck.blog12.fc2.com/tb.php/32-d9864781

コメント

コメントする

管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。