Speaking of Date::Manip. :)
--
#!/usr/bin/env perl
use strict;
use warnings;
use DateTime;
use DateTime::Format::MySQL;
use Date::Manip ();
use Benchmark qw(cmpthese);
print "Compare dates\n";
cmpthese( -5, {
DateTime => sub {
my $dt1 = DateTime->now();
$dt1->set_time_zone( '-1000' );
my $dt2 = DateTime::Format::MySQL->parse_datetime( "2000-05-10
15:15:00" );
my $dt_dur = DateTime::Duration->new( days => 4 );
$dt1->subtract_duration( $dt_dur );
my $cmp = DateTime->compare($dt1, $dt2);
},
'Date::Manip' => sub {
my $dm1 = Date::Manip::DateCalc( "now", "- 4 days" );
my $dm2 = Date::Manip::ParseDate( "2000-05-10 15:15:00" );
my $cmp = Date::Manip::Date_Cmp( $dm1, $dm2 );
},
});
print "Change TZ\n";
cmpthese( -5, {
DateTime => sub {
my $dt = DateTime::Format::MySQL->parse_datetime( "2000-05-10
15:15:00" );
$dt->set_time_zone( 'UTC' );
$dt->set_time_zone( '-1000' );
$dt->strftime( "%Y-%m-%d %H:%M:%S" );
},
'Date::Manip' => sub {
my $date = Date::Manip::ParseDate( "2000-05-10 15:15:00" );
my $new_date = Date::Manip::Date_ConvTZ( $date, "UTC", "HST");
Date::Manip::UnixDate( $new_date, "%Y-%m-%d %H:%M:%S" );
},
});
--
#
# USIIe 500mhz / Solaris 8
#
Compare dates
Benchmark: running Date::Manip, DateTime for at least 5 CPU seconds...
Date::Manip: 6 wallclock secs ( 5.30 usr + 0.00 sys = 5.30 CPU) @ 51.32/s (n=272)
DateTime: 6 wallclock secs ( 5.26 usr + 0.00 sys = 5.26 CPU) @ 127.38/s (n=670)
Rate Date::Manip DateTime
Date::Manip 51.3/s -- -60%
DateTime 127/s 148% --
Change TZ
Benchmark: running Date::Manip, DateTime for at least 5 CPU seconds...
Date::Manip: 5 wallclock secs ( 5.21 usr + 0.00 sys = 5.21 CPU) @ 112.09/s (n=584)
DateTime: 5 wallclock secs ( 5.27 usr + 0.00 sys = 5.27 CPU) @ 233.59/s (n=1231)
Rate Date::Manip DateTime
Date::Manip 112/s -- -52%
DateTime 234/s 108% --
#
# Pentium-IV 2.53ghz / RedHat 8.0
#
Compare dates
Benchmark: running Date::Manip, DateTime for at least 5 CPU seconds...
Date::Manip: 5 wallclock secs ( 5.23 usr + 0.03 sys = 5.26 CPU) @ 249.43/s (n=1312)
DateTime: 6 wallclock secs ( 5.24 usr + 0.03 sys = 5.27 CPU) @ 542.50/s (n=2859)
Rate Date::Manip DateTime
Date::Manip 249/s -- -54%
DateTime 543/s 117% --
Change TZ
Benchmark: running Date::Manip, DateTime for at least 5 CPU seconds...
Date::Manip: 5 wallclock secs ( 5.34 usr + 0.02 sys = 5.36 CPU) @ 553.17/s (n=2965)
DateTime: 5 wallclock secs ( 5.27 usr + 0.02 sys = 5.29 CPU) @ 1024.20/s (n=5418)
Rate Date::Manip DateTime
Date::Manip 553/s -- -46%
DateTime 1024/s 85% --
#
# Pentium-IIIM (512K-L2) 1.2ghz / Gentoo 1.4r2
#
Compare dates
Benchmark: running Date::Manip, DateTime for at least 5 CPU seconds...
Date::Manip: 5 wallclock secs ( 5.30 usr + 0.00 sys = 5.30 CPU) @ 220.00/s (n=1166)
DateTime: 5 wallclock secs ( 5.30 usr + 0.00 sys = 5.30 CPU) @ 614.34/s (n=3256)
Rate Date::Manip DateTime
Date::Manip 220/s -- -64%
DateTime 614/s 179% --
Change TZ
Benchmark: running Date::Manip, DateTime for at least 5 CPU seconds...
Date::Manip: 6 wallclock secs ( 5.33 usr + 0.00 sys = 5.33 CPU) @ 479.36/s (n=2555)
DateTime: 6 wallclock secs ( 5.26 usr + 0.00 sys = 5.26 CPU) @ 1148.67/s (n=6042)
Rate Date::Manip DateTime
Date::Manip 479/s -- -58%
DateTime 1149/s 140% --
-J
--