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