Pathologically Eclectic Rubbish Lister PerlMonks

comment on

 Need Help??

What? You're going to compare 16 lines of unrelated code (which contains a nasty loop) to a single line function and call it a benchmark victory? The OP was looking for a quick date time increment. His solution contained this and plenty of other code not directly related to the date time increment. If you're going to benchmark you won't get very far comparing apples to oranges.

By my benchmarking, the OP's "equivalent datetime increment" code is 144 times faster than DateTime and nearly as fast as Date::Calc.

```use strict;
use warnings;

use DateTime;
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);
my (\$mday, \$mon, \$wday, \$yday, \$isdst);
my \$time = time();

cmpthese(
-1,
{
'DateTime' => sub {
\$dt->add(hours => 1, minutes => 2, seconds => 3);
},
'Date::Calc' => sub {
(\$year, \$month, \$day, \$hour, \$min, \$sec) =
Add_Delta_DHMS(\$year, \$month, \$day, \$hour, \$min, \$sec, 0, 1, 2
+, 3);
},
'tsk1979' => sub {
\$time += 3723; # 1 * 60 * 60 + 2 * 60 + 3
(\$sec, \$min, \$hour, \$mday, \$mon, \$year, \$wday, \$yday, \$isdst) =
localtime(\$time);
},
}
);

__END__

Rate   DateTime    tsk1979 Date::Calc
DateTime     2875/s         --       -99%       -99%
tsk1979    431483/s     14910%         --       -18%
Date::Calc 526429/s     18213%        22%         --

It's a good habit to check that your Benchmark code is equivalent before making bold claims about your Benchmark results.

In reply to Re^2: Solution found! by ruzam
in thread Simple date and time manipulation by tsk1979

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

• Are you posting in the right place? Check out Where do I post X? to know for sure.
• Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
• Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
• Want more info? How to link or How to display code and escape characters are good places to start.

Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2022-11-27 02:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My favourite new Perl feature (in 2022) ...

Results (40 votes). Check out past polls.

Notices?