On Monday 20 August 2007 16:49:53 Mark Glines wrote: > With this patch, parrot rebuilds for me in 1 minute 41 seconds, plus or > minus a few seconds. That's almost 80 seconds faster; a 45% improvement > in build time. > > For reference, I also tried YAML::Syck, which built in 1 minute 55 > seconds. But Storable is in the perl base install, and its even faster. > > Eval sucks. Are there any drawbacks to this patch? The only thing I > can think of is that its harder to read the .dump file now that it's > binary. But it wasn't terribly well organized to begin with...
Good idea. I have just one suggestion: > use_Storable_for_pmc_dump_files.diff > Index: lib/Parrot/Pmc2c/Pmc2cMain.pm > =================================================================== > --- lib/Parrot/Pmc2c/Pmc2cMain.pm (revision 20738) > +++ lib/Parrot/Pmc2c/Pmc2cMain.pm (working copy) > @@ -248,9 +248,7 @@ > my ( $self, $filename ) = @_; > $filename = $self->find_file( filename($filename, '.dump'), 1 ); > > - my $class; > - eval do { slurp($filename); }; > - die $@ if $@; > + my $class = retrieve($filename) if -f $filename; > > return $class; > } my $foo if <something> creates a static-style variable, which could do the wrong thing here. Another option is: return retrieve($filename) if -f $filename; ... or: my $class; $class = retrieve($filename) if -f $filename; return $class; ... or: return unless -f $filename; return retrieve($filename); My preference is the latter, for clarity and context reasons. -- c