in reply to Re^2: Special case mktime: semi-sequential access
in thread Special case mktime: semi-sequential access
Yep, that's very interesting, I get similar sorts of results here but mktime only takes 33 seconds. my machine isn't that new so I don't know why there such a big difference. I'm running perl v5.16 on 64 bit Linux.
mktime seems to stat /etc/localtime every time so that's where the system time is coming from, it's odd that it isn't cached, but I don't think I want to delve into the depths of the posix library to find out more ;).
I guess you could tweak your code a little bit, if you're after every last cycle :-
A valid $day can never be zero so there no point testing if $mk_day > 0, $mk_day == $day is enough
and if you create your times for midnight i.e. $time = POSIX::mktime(0, 0, 0, $day, $mon, $year); then you can drop $mk_hms and save yourself one whole subtraction :)