On Mon Jan 09 17:05:30 2006, [EMAIL PROTECTED] wrote:
> Simple profile suggests that pmc2c.pl is spending about 25% of it's
> total execution time loading FindBin. The lib path use of FindBin::Bin
> can be replaced with 'use lib qw( . lib ../lib ../../lib );' while the
> other uses of FindBin::Bin will have be replaced by values that are
> interpolated by genfile().
>
Perhaps things have changed since January 2006, when this ticket was
opened. My own profiling on individual runs of tools/build/pmc2c.pl
suggested that FindBin was only taking up between 1.8% and 6.5% of total
execution time. Be that as it may, ...
This patch gets us a little way toward that goal by determining
$FindBin::Bin once during tools/build/pmc2c.pl and then passing it as an
argument to the Parrot::Pmc2c::Pmc2cMain constructor, thereby
eliminating some $Bin lookups in that method. My timing suggests that
this reduces total time for 'make' by 1.5%.
Please review. I'll apply next week if there is no objection.
Thank you very much.
kid51
Index: tools/build/pmc2c.pl
===================================================================
--- tools/build/pmc2c.pl (revision 26514)
+++ tools/build/pmc2c.pl (working copy)
@@ -4,9 +4,9 @@
use strict;
use warnings;
-use FindBin;
-use lib "$FindBin::Bin/../..";
-use lib "$FindBin::Bin/../../lib";
+use FindBin qw($Bin);
+use lib "$Bin/../..";
+use lib "$Bin/../../lib";
use Getopt::Long ();
use Parrot::Pmc2c::Pmc2cMain ();
@@ -39,11 +39,12 @@
include => [EMAIL PROTECTED],
opt => \%options,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
if ( $action{default} ) {
- $self->dump_vtable("$FindBin::Bin/../../src/vtable.tbl");
+ $self->dump_vtable("$Bin/../../src/vtable.tbl");
exit;
}
Index: lib/Parrot/Pmc2c/Pmc2cMain.pm
===================================================================
--- lib/Parrot/Pmc2c/Pmc2cMain.pm (revision 26514)
+++ lib/Parrot/Pmc2c/Pmc2cMain.pm (working copy)
@@ -3,7 +3,6 @@
package Parrot::Pmc2c::Pmc2cMain;
use strict;
use warnings;
-use FindBin;
use Storable ();
use Parrot::PMC ();
use Parrot::Pmc2c::VTable ();
@@ -88,7 +87,7 @@
unless ( defined $allargsref->{args} and ref( $allargsref->{args} ) eq
q{ARRAY} );
unshift @{ $allargsref->{include} },
- ( ".", "$FindBin::Bin/../..", "$FindBin::Bin/../../src/pmc/" );
+ ( ".", "$allargsref->{bin}/../..", "$allargsref->{bin}/../../src/pmc/"
);
foreach my $opt qw(nolines) {
if ( !defined $allargsref->{opt}{$opt} ) {
@@ -100,7 +99,7 @@
=head3 C<dump_vtable()>
- $self->dump_vtable("$FindBin::Bin/../../src/vtable.tbl");
+ $self->dump_vtable("$Bin/../../src/vtable.tbl");
B<Purpose:> Create a F<.dump> file for the default vtable (from which
all PMCs inherit).
Index: t/tools/pmc2cutils/05-gen_c.t
===================================================================
--- t/tools/pmc2cutils/05-gen_c.t (revision 26514)
+++ t/tools/pmc2cutils/05-gen_c.t (working copy)
@@ -65,6 +65,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -106,6 +107,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -148,6 +150,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -198,6 +201,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
Index: t/tools/pmc2cutils/02-find_file.t
===================================================================
--- t/tools/pmc2cutils/02-find_file.t (revision 26514)
+++ t/tools/pmc2cutils/02-find_file.t (working copy)
@@ -32,6 +32,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
Index: t/tools/pmc2cutils/06-print_tree.t
===================================================================
--- t/tools/pmc2cutils/06-print_tree.t (revision 26514)
+++ t/tools/pmc2cutils/06-print_tree.t (working copy)
@@ -65,6 +65,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -114,6 +115,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -167,6 +169,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -220,6 +223,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -269,6 +273,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
Index: t/tools/pmc2cutils/03-dump_vtable.t
===================================================================
--- t/tools/pmc2cutils/03-dump_vtable.t (revision 26514)
+++ t/tools/pmc2cutils/03-dump_vtable.t (working copy)
@@ -41,6 +41,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
$dump_file = $self->dump_vtable("$main::topdir/src/vtable.tbl");
Index: t/tools/pmc2cutils/01-pmc2cutils.t
===================================================================
--- t/tools/pmc2cutils/01-pmc2cutils.t (revision 26514)
+++ t/tools/pmc2cutils/01-pmc2cutils.t (working copy)
@@ -31,6 +31,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
Index: t/tools/pmc2cutils/04-dump_pmc.t
===================================================================
--- t/tools/pmc2cutils/04-dump_pmc.t (revision 26514)
+++ t/tools/pmc2cutils/04-dump_pmc.t (working copy)
@@ -62,6 +62,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -100,6 +101,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -141,6 +143,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -156,6 +159,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -191,6 +195,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -236,6 +241,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -287,6 +293,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -329,6 +336,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -368,6 +376,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -411,6 +420,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );
@@ -468,6 +478,7 @@
include => [EMAIL PROTECTED],
opt => \%opt,
args => [EMAIL PROTECTED],
+ bin => $Bin,
}
);
isa_ok( $self, q{Parrot::Pmc2c::Pmc2cMain} );