On Thu, Oct 23, 2003 at 09:17:24PM -0500, Michael Carman wrote:
>
> [1] roughly 430 tests in 18 *.t files. Timing done with a wristwatch on a
> single-user WinXP system.
>
> I tried it, and it does help some. In my very unscientific test[1] it ran about
> 20% faster. The size of the db file (on disk) was about 75% smaller.
Thanks. 20% is certainly useful.
> I've included a patch for Devel/Cover/DB.pm in case someone else wants to try
> it. It has *not* been sanctioned by Paul (though he's welcome to it) so use at
> your own risk. Obviously, the file format for the database is incompatible with
> the current version.
Has anyone tried this yet? Paul, will you be adopting it?
On a slightly related topic: has anyone tried Devel::DProf (or some
other profiler) with Devel::Cover? Got any results?
I still don't have time to get into this now but I'd certainly be
interested in seeing dproff output - might just push me over the
edge into working on it some.
Tim.
> -mjc
>
> *** DB.pm.old Thu Oct 23 14:58:02 2003
> --- DB.pm.new Thu Oct 23 15:00:01 2003
> ***************
> *** 18,25 ****
> use Carp;
> use Data::Dumper;
> use File::Path;
>
> ! my $DB = "cover.4"; # Version 4 of the database.
>
> sub new
> {
> --- 18,26 ----
> use Carp;
> use Data::Dumper;
> use File::Path;
> + use Storable;
>
> ! my $DB = "cover.5"; # Version 5 of the database.
>
> sub new
> {
> ***************
> *** 49,65 ****
> $self->validate_db;
> $file = "$self->{db}/$DB";
> return $self unless -e $file;
> ! open F, "<$file" or croak "Unable to open $file: $!";
> ! $self->{filehandle} = *F{IO};
> }
>
> - $self->read if defined $self->{filehandle};
> -
> - if (defined $file)
> - {
> - close F or croak "Unable to close $file: $!";
> - }
> -
> croak "No input db, filehandle or cover" unless defined $self->{cover};
>
> $self
> --- 50,58 ----
> $self->validate_db;
> $file = "$self->{db}/$DB";
> return $self unless -e $file;
> ! $self->read($file);
> }
>
> croak "No input db, filehandle or cover" unless defined $self->{cover};
>
> $self
> ***************
> *** 70,111 ****
> sub all_criteria { @{$_[0]->{all_criteria }} }
> sub all_criteria_short { @{$_[0]->{all_criteria_short}} }
>
> ! sub read
> ! {
> my $self = shift;
> ! local $/;
> ! my $db;
> ! my $fh = $self->{filehandle};
> ! eval <$fh>;
> ! croak $@ if $@;
> $self->{cover} = $db->{cover};
> $self->{collected} = $db->{collected};
> $self->{indent} = $db->{indent};
> ! $self
> }
>
> ! sub write
> ! {
> my $self = shift;
> $self->{db} = shift if @_;
> croak "No db specified" unless length $self->{db};
> $self->validate_db;
> ! my $db =
> ! {
> cover => $self->{cover},
> collected => $self->{collected},
> indent => $self->{indent},
> };
> ! local $Data::Dumper::Indent = $self->indent;
> ! local $Data::Dumper::Sortkeys = 1;
> ! local $Data::Dumper::Useperl = 1; # TODO - remove this when possible
> ! my $file = "$self->{db}/$DB";
> ! open OUT, ">$file" or croak "Cannot open $file\n";
> ! print OUT Data::Dumper->Dump([$db], ["db"]);
> ! close OUT or croak "Cannot close $file\n";
> ! $self
> }
>
> sub delete
> {
> my $self = shift;
> --- 63,96 ----
> sub all_criteria { @{$_[0]->{all_criteria }} }
> sub all_criteria_short { @{$_[0]->{all_criteria_short}} }
>
> ! sub read {
> my $self = shift;
> ! my $file = shift;
> ! my $db = retrieve($file);
> !
> $self->{cover} = $db->{cover};
> $self->{collected} = $db->{collected};
> $self->{indent} = $db->{indent};
> ! return $self;
> }
>
> ! sub write {
> my $self = shift;
> $self->{db} = shift if @_;
> croak "No db specified" unless length $self->{db};
> $self->validate_db;
> !
> ! my $db = {
> cover => $self->{cover},
> collected => $self->{collected},
> indent => $self->{indent},
> };
> !
> ! Storable::nstore $db, "$self->{db}/$DB";
> ! return $self;
> }
>
> +
> sub delete
> {
> my $self = shift;
>