DateTime ~ 'local' vs DateTime::TimeZone->new(name => 'local')
同じタイムゾーンの場合 'local' って指定するんじゃなくて、$timezoneのオブジェクトを使い回した方がはやい。
#!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all); use DateTime; use DateTime::TimeZone; my $timezone = DateTime::TimeZone->new(name => 'local'); cmpthese( -5 , { label => sub { my $dt = DateTime->now( time_zone => 'local' ); }, obj => sub { my $dt = DateTime->now( time_zone => DateTime::TimeZone->new(name => 'local') ); }, obj2 => sub { my $dt = DateTime->now( time_zone => $timezone ); } }); 1;
Rate label obj obj2 label 110/s -- -0% -94% obj 111/s 0% -- -94% obj2 1822/s 1553% 1546% --
やましー++