Improve profiling script. Type "perl bench/profile.pl" and nytprof-$branch will be...
gfx [Wed, 15 Jul 2009 06:13:52 +0000 (15:13 +0900)]
bench/foo.pl [new file with mode: 0755]
bench/loading-profile.pl [deleted file]
bench/profile.pl [new file with mode: 0755]

diff --git a/bench/foo.pl b/bench/foo.pl
new file mode 100755 (executable)
index 0000000..a2c799a
--- /dev/null
@@ -0,0 +1,66 @@
+#!perl
+# a moose using script for profiling
+# Usage: perl bench/profile.pl
+
+package Foo;
+use Moose;
+
+has aaa => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+has bbb => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+has ccc => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+has ddd => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+has eee => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+__PACKAGE__->meta->make_immutable();
+
+
+package Bar;
+use Moose;
+
+extends 'Foo';
+
+has xaaa => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+has xbbb => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+has xccc => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+has xddd => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+has xeee => (
+       is => 'rw',
+       isa => 'Str',
+);
+
+__PACKAGE__->meta->make_immutable();
diff --git a/bench/loading-profile.pl b/bench/loading-profile.pl
deleted file mode 100755 (executable)
index 5337d84..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!perl -wd:NYTProf
-require Moose;
diff --git a/bench/profile.pl b/bench/profile.pl
new file mode 100755 (executable)
index 0000000..c4ffc6f
--- /dev/null
@@ -0,0 +1,25 @@
+#!perl -w
+# Usage: perl bench/profile.pl (no other options including -Mblib are reqired)
+
+use strict;
+
+my $script = 'bench/foo.pl';
+
+my $branch = do{
+       open my $in, '.git/HEAD' or die "Cannot open .git/HEAD: $!";
+       my $s = scalar <$in>;
+       chomp $s;
+       $s =~ s{^ref: \s+ refs/heads/}{}xms;
+       $s =~ s{/}{_}xmsg;
+       $s;
+};
+
+print "Profiling $branch ...\n";
+
+my @cmd = ($^X, '-Iblib/lib', '-Iblib/arch', $script);
+print "> @cmd\n";
+system(@cmd) == 0 or die "Cannot profile";
+
+@cmd = ($^X, '-S', 'nytprofhtml', '--out', "nytprof-$branch");
+print "> @cmd\n";
+system(@cmd) == 0 or die "Cannot profile";