DateTimers, While profiling Sqitch, I found that the biggest suck on its time (now that I have removed Moose and Mouse in favor of Moo) is DateTime. The reason? It loads all of the locales in its BEGIN block. Run this to see for yourself:
perl -d:NYTProf -e 'use DateTime;' && nytprofhtml --open
Here's the topline:
Top 15 Subroutines
Calls P F Exclusive
Time Inclusive
Time Subroutine
466 1 1 15.6ms 24.4ms DateTime::Locale::_register
1 1 1 11.2ms 119ms main::BEGIN@1
468 2 2 8.65ms 8.65ms Params::Validate::XS::validate
(xsub)
1 1 1 8.29ms 8.50ms DateTime::Locale::BEGIN@11
9 9 6 5.23ms 6.44ms base::import
(recurses: max depth 2, inclusive time 1.79ms)
1 1 1 3.65ms 7.98ms DateTime::BEGIN@16
1 1 1 3.53ms 4.54ms DateTime::TimeZone::Local::BEGIN@8
1 1 1 3.22ms 21.6ms DateTime::BEGIN@13
1 1 1 2.99ms 3.08ms DateTime::TimeZone::BEGIN@8
1 1 1 2.97ms 3.19ms DateTime::BEGIN@9
1 1 1 2.91ms 4.26ms DateTime::Locale::BEGIN@10
1 1 1 2.74ms 6.58ms DateTime::Locale::add_aliases
24 24 18 2.73ms 2.97ms Exporter::import
1 1 1 2.53ms 2.87ms Try::Tiny::ScopeGuard::BEGIN@144
1 1 1 2.38ms 3.00ms Data::OptList::BEGIN@10
Does DateTime *really* need to always load all 466 locales on startup? Couldn't
it load them on demand?
Thanks,
David
signature.asc
Description: Message signed with OpenPGP using GPGMail
