camel

��Ϥ��ޤ�DateTime�ϻȤäƤʤ��Τ����ɡ�better practice�򸫤Ĥ����Ȼפ��Τǡ�

[perl] DateTime->now(time_zone => 'local')�äƷ��� - �����̤�����(�����) (2006-12-06)
Perl�������������⥸�塼��Υǥե����ȥ���������ɤǤ���DateTime�Ǥ��������ޤǡ֥����ॾ����ʤ�ƥ����ƥ���������Ƥ����Τ��龡��˼�äƤ��Ƥۤ����פȤ�����ͳ��
DateTime->now(time_zone => 'local');

�ʤ�Ƥ��Ȥ򤷤Ƥ��ΤǤ��������줬���٤ʤ��Ȥ�ȯ�Ф��ޤ�����

��Ԥǽ񤯤ȡ��ʲ��ΤȤ��ꡣ

my $tzhere = DateTime::TimeZone->new( name => 'local' );
my $dt = DateTime->now(time_zone => $tzhere);

�פϡ����餫����DateTime::TimeZone���֥������Ȥ򤳤����Ȥ��ơ������Ȥ��󤻤Ȥ������ȡ����������������ʾ�˹�®�ˤʤ뤷���ݡ����ӥ�ƥ���»�ʤ����Ȥ⤢��ޤ���

dtbench.pl
#!/usr/bin/perl
use strict;
use DateTime;
use DateTime::TimeZone;
use Benchmark qw/cmpthese timethese/;

sub gentest {
    my $tz = shift;
    sub { DateTime->now( time_zone => $tz ) }
}
my $tzhere = DateTime::TimeZone->new( name => 'local' );
my %these;
for my $tz ( 'local', 'Asia/Tokyo', $tzhere ) {
    my $name = ref($tz) ? q($tz) : qq('$tz');
    $these{ "now($name)" } = gentest($tz);
}
cmpthese( timethese( 0, \%these ) );
FreeBSD 6-STABLE
  now($tz):  3 wallclock secs ( 3.16 usr +  0.02 sys =  3.18 CPU) @ 2279.15/s (n=7247)
now('Asia/Tokyo'):  4 wallclock secs ( 3.19 usr +  0.02 sys =  3.20 CPU) @ 2029.58/s (n=6501)
now('local'):  4 wallclock secs ( 0.87 usr +  2.36 sys =  3.23 CPU) @ 67.25/s (n=217)
                    Rate      now('local') now('Asia/Tokyo')          now($tz)
now('local')      67.3/s                --              -97%              -97%
now('Asia/Tokyo') 2030/s             2918%                --              -11%
now($tz)          2279/s             3289%               12%                --
Mac OS X v10.4.8
 now($tz):  4 wallclock secs ( 3.23 usr +  0.02 sys =  3.25 CPU) @ 2871.08/s (n=9331)
now('Asia/Tokyo'):  3 wallclock secs ( 3.18 usr +  0.01 sys =  3.19 CPU) @ 2616.61/s (n=8347)
now('local'):  3 wallclock secs ( 3.09 usr +  0.16 sys =  3.25 CPU) @ 1767.38/s (n=5744)
                    Rate      now('local') now('Asia/Tokyo')          now($tz)
now('local')      1767/s                --              -32%              -38%
now('Asia/Tokyo') 2617/s               48%                --               -9%
now($tz)          2871/s               62%               10%                --

���ʤߤˡ�OS X�������������ʤ��Τϡ�/etc/localtime��symlink�����顣DateTime::TimeZone�Ϥ��ξ���Symlink���ɤ�ǥ����ॾ����̾�򤹤��˳��Ф��Τ����ɡ��¥ե�����ξ��ϡ�/usr/share/zoneinfo�ʲ��Υե����������File::Compare����Ӥ���Ȥ����ޤ��ޤ�����ˡ��Ĵ�٤ޤ���

����ʤȤ������ʡ�

Dan the Man with Too Many Timezones to Cover