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%    --

やましー++