■
だいぶ前に書いたコード久々に見てみたら、onetimeみたいにループ中で毎回Digest->new
してたのでちょっと気になってベンチマークとってみた。サイズにもよるけど、再利用するのに比べて6倍くらい遅いなぁ…… 毎回生成するのはやっぱりコストが大きいね。
use strict; use warnings; use Benchmark; use Digest; my $count = 50000; timethese(5, { recycle => sub { my $md5 = Digest->new('MD5'); foreach (1 .. $count) { my $digest = $md5->add($_)->digest; $md5->reset; } }, onetime => sub { foreach (1 .. $count) { my $digest = Digest->new('MD5')->add($_)->digest; } }, });