$ cat 639358.pl use strict; use warnings; use Date::Calc qw(Delta_YMDHMS); use Date::Manip; use Date::Parse; use DateTime; use Benchmark qw(cmpthese); my ($d1, $d2) = ("Aug 26 23:10:59", "Aug 27 10:59:02"); sub date_manip { return UnixDate($d1, "%s") - UnixDate($d2, "%s"); } sub date_calc { return Delta_YMDHMS(2007, 8, 26, 23, 10, 59, 2007, 8, 27, 10, 59, 02); } sub date_parse { return str2time($d1) - str2time($d2); } sub datetime { return DateTime->new( year => 2007, month => 8, day => 26, hour => 23, minute => 10, second => 59 ) - DateTime->new( year => 2007, month => 8, day => 27, hour => 10, minute => 59, second => 02 ); } cmpthese( -1, { date_manip => \&date_manip, date_parse => \&date_parse, date_calc => \&date_calc, datetime => \&datetime } ); __END__ $ perl 639358.pl Rate date_manip datetime date_parse date_calc date_manip 310/s -- -65% -89% -100% datetime 888/s 186% -- -68% -100% date_parse 2774/s 794% 212% -- -99% date_calc 374797/s 120730% 42109% 13413% --