#! perl -slw use strict; use POSIX qw[ strftime ]; use Math::BigInt; use Date::Calc qw/Add_Delta_Days/; use Benchmark qw[ cmpthese ]; sub holli { return POSIX::strftime( "%Y-%m-%d", localtime( ( $_[0] / 10000000 ) - 11644473600 ) ); } sub yours { my $loginTime = Math::BigInt->new( $_[ 0 ] ); $loginTime = $loginTime / (60 * 10000000 ); # 60 seconds in a minute! $loginTime = $loginTime / 1440; my ($year,$month,$day) = Add_Delta_Days( 1601, 1, 1, $loginTime ); return "$year-$month-$day\n"; } our $lastLoginTime = '127912653523035916'; cmpthese -1, { yours => q[ my $dateStr = yours( $lastLoginTime ); ], holli => q[ my $dateStr = holli( $lastLoginTime ); ], } __END__ holli: 2006-05-05 yours: 2006-5-5 c:\test>junk8 Rate yours holli yours 3150/s -- -98% holli 161606/s 5030% --