> If script startup and module loading really is the culprit you could try the > mod_perl approach. > > Load all required modules and then for each script, fork a new perl process > which uses do "testxxx.t" to run each script.
That's a good idea - thanks! I gave it a try and these are the times I got: Time Method ---- ------ 6:09 prove -r tests/ 4:14 for i in tests/**/*.t ; do perl $i; done 2:57 runscripts-forking.pl tests/**/*.t This is for a suite of 165 test scripts. So it does look like there are efficiencies to be had, it's just a question of whether it's worth the bother (e.g. to figure out how to parse the output of the forked scripts). runscripts-forking.pl basically looks like this: #!/usr/bin/perl use strict; # ... use a ton of modules here ... foreach my $script (@ARGV) { warn "Script: $script\n"; unless (runscript($script)) { warn "FAILED: Script $script: $! [EMAIL PROTECTED]"; last; } } sub runscript { my $script = shift; my $pid; if (!defined($pid = fork)) { warn "Cannot fork: $!\n"; return; } elsif ($pid) { my $ret = waitpid($pid, 0); return $ret; } do $script or die "Compile errors: $script: [EMAIL PROTECTED]"; exit; } Michael -- Michael Graham <[EMAIL PROTECTED]>