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

--

Reply via email to