Here are some of the techniques I use to minimize startup overhead. Due to the nature of our application (command-line tools), we would like quick responses everytime a script is called from the shell.
1) Avoid Moose. Mouse used to be a bit too heavy for my taste too, so we always use Moo, but nowadays I guess Mouse is okay, especially since Mouse provides much more feature. But in general I still avoid OO-style or use bare Perl5 OO for simpler app…
For some reason that I have not bothered to investigate yet (but probably due to my screwed up perlbrew installation), AutoLoader fails to work with 'prove' and 'dzil test'. I just need to separate a couple of heavy routines off the main module, to shave startup time. So here's what I did:
1) Manually split the heavy routines to My/Module/al_method1.pm and My/Module/al_method2.pm.
2) In My/Module.pm, add:
use vars qw($AUTOLOAD);
sub AUTOLOAD {
my ($pkg, $sub) = $AUTOLOAD =~ /(.+)::(.+)/;
die "Undefined subroutine" unl…
This posting series relate to wishlist for existing modules. Some items are serious, some are not. I have not created a patch or submitted an RT ticket for the items, I'm posting them first to see other people's take on things.
1. Parallel cpanm. Last time I checked, there's a github issue on it. Ever had to install 200-300 modules on new servers? Without -n? Not for the terribly impatient. I suspect this is best implemented by a wrapper for cpanm.
2. DateTime->from_ymd(). It irks me that I have to write DateTime->new(year=>Y, month=>M, day=>D) everytime or (worse) having to u…