use strict; use warnings; use DateTime; use Date::Calc qw (Add_Delta_DHMS); use Benchmark qw(cmpthese); my $dt = DateTime->new( year => 2011, month => 1, day => 1, hour => 0, minute => 0, second => 0, ); my ($year, $month, $day, $hour, $min, $sec) = (2011, 1, 1, 0, 0, 0); cmpthese( -1, { 'DateTime' => sub { print $dt->ymd() . ' ' . $dt->hms; $dt->add(hours => 1, minutes => 2, seconds => 3); }, 'Date::Calc' => sub { print $year . '-' . $month . '-' . $day . ' ' . $hour . '-' . $min . '-' . $sec; ($year, $month, $day, $hour, $min, $sec) = Add_Delta_DHMS($year, $month, $day, $hour, $min, $sec, 0, 1, 2, 3); }, } ); __END__ $ perl -l 883070.pl | tail -5 2011-07-18 10:20:15 2011-07-18 11:22:18 Rate DateTime Date::Calc DateTime 3258/s -- -99% Date::Calc 481882/s 14690% -- $