Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Solution found!

by ruzam (Curate)
on Jan 19, 2011 at 17:35 UTC ( #883174=note: print w/replies, xml ) Need Help??


in reply to Re: Solution found!
in thread Simple date and time manipulation

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 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); 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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://883174]
help
Chatterbox?
[atcroft]: abner: Do you mean something like SELECT `foo`, `bar` FROM `table_name' WHERE (( `foo` = "asdf" ) OR ( `bar` = 'asdw' )); Or something else?
[abner]: yes. i am familiar with mysql but ignorant about how to get around the fact that placeholders can only represent single scalar values.
[abner]: my $sth = $dbh->prepare(' SELECT * FROM charge WHERE cpt = ?') or die "Couldn't prepare statement: " . $dbh->errstr;
[abner]: what if i want SELECT * FROM charge WHERE col1 = x and col2 = y?

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2017-01-24 03:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you watch meteor showers?




    Results (201 votes). Check out past polls.