|Keep It Simple, Stupid|
Answer: Can Perl remain persistent for scripts just like mod_perl does for apache?
Q&A > programs and processes > Can Perl remain persistent for scripts just like mod_perl does for apache? - Answer contributed by tye
I can certainly understand the desire for this. The start-up time for Perl scripts can be a bit of a problem (otherwise there would be no need for mod_perl -- though it is usually more of a problem when serving web pages than most other situations).
Each time you run a script, the perl executable must start up, initialize a new interpreter, then compile the script and any modules or other stuff that the script requires. This can add up -- though, I think this is less often noticed as a problem on modern machines that have to be faster to deal with the growing software bloat.
If perl is being run often, then most operating systems will keep the perl executable cached in memory (if not short on RAM). But the operating system can't cache the compiled Perl script no matter how often you run it.
A lot of work has been put into a pre-compiler for Perl that takes a Perl script and compiles it to some other format that is much faster for Perl to load. Initially the load time for the pre-compiled scripts was actually longer than the original compile time because of the amount of data that had to be read in.
I hear much improvement has been made in this area so you should check out the B (for Backend) modules and tools that come standard with modern versions of Perl.
I've often wanted a good Perl shell that would let me do simple things like "rm file" without loading any external executables and would let me do more complex things by loading a module so that each time I want to do that again, it is already loaded for me. But that will only help start-up of some interactive commands.
If you have just a few particular scripts that are being run over and over, then there are things you can do to speed those up, making all or much of the script into a demon that is always running, for example.