← Index
NYTProf Performance Profile   « line view »
For t/optimization.t
  Run on Thu Jan 8 22:47:42 2015
Reported on Thu Jan 8 22:48:06 2015

Filename/home/ss5/perl5/perlbrew/perls/tapper-perl/lib/5.16.3/x86_64-linux/Opcode.pm
StatementsExecuted 1806 statements in 3.88ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1111.84ms2.22msOpcode::::_init_optagsOpcode::_init_optags
111184µs261µsOpcode::::BEGIN@29Opcode::BEGIN@29
31621128µs128µsOpcode::::CORE:matchOpcode::CORE:match (opcode)
213267µs67µsOpcode::::opsetOpcode::opset (xsub)
283165µs65µsOpcode::::CORE:readlineOpcode::CORE:readline (opcode)
21149µs173µsOpcode::::_safe_call_svOpcode::_safe_call_sv (xsub)
1011143µs43µsOpcode::::CORE:substOpcode::CORE:subst (opcode)
11143µs43µsOpcode::::opset_to_opsOpcode::opset_to_ops (xsub)
11133µs33µsOpcode::::BEGIN@3Opcode::BEGIN@3
191122µs22µsOpcode::::define_optagOpcode::define_optag (xsub)
11116µs40µsOpcode::::BEGIN@5Opcode::BEGIN@5
11113µs66µsOpcode::::BEGIN@11Opcode::BEGIN@11
11113µs13µsOpcode::::BEGIN@15Opcode::BEGIN@15
1118µs8µsOpcode::::CORE:closeOpcode::CORE:close (opcode)
1117µs7µsOpcode::::BEGIN@13Opcode::BEGIN@13
1116µs6µsOpcode::::_safe_pkg_prepOpcode::_safe_pkg_prep (xsub)
1115µs5µsOpcode::::BEGIN@12Opcode::BEGIN@12
2212µs2µsOpcode::::invert_opsetOpcode::invert_opset (xsub)
1112µs2µsOpcode::::full_opsetOpcode::full_opset (xsub)
0000s0sOpcode::::opdumpOpcode::opdump
0000s0sOpcode::::ops_to_opsetOpcode::ops_to_opset
0000s0sOpcode::::opset_to_hexOpcode::opset_to_hex
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Opcode;
2
3299µs133µs
# spent 33µs within Opcode::BEGIN@3 which was called: # once (33µs+0s) by Safe::BEGIN@46 at line 3
use 5.006_001;
# spent 33µs making 1 call to Opcode::BEGIN@3
4
5272µs264µs
# spent 40µs (16+24) within Opcode::BEGIN@5 which was called: # once (16µs+24µs) by Safe::BEGIN@46 at line 5
use strict;
# spent 40µs making 1 call to Opcode::BEGIN@5 # spent 24µs making 1 call to strict::import
6
71600nsour($VERSION, @ISA, @EXPORT_OK);
8
91700ns$VERSION = "1.23";
10
11229µs2119µs
# spent 66µs (13+53) within Opcode::BEGIN@11 which was called: # once (13µs+53µs) by Safe::BEGIN@46 at line 11
use Carp;
# spent 66µs making 1 call to Opcode::BEGIN@11 # spent 53µs making 1 call to Exporter::import
12226µs15µs
# spent 5µs within Opcode::BEGIN@12 which was called: # once (5µs+0s) by Safe::BEGIN@46 at line 12
use Exporter ();
# spent 5µs making 1 call to Opcode::BEGIN@12
13256µs17µs
# spent 7µs within Opcode::BEGIN@13 which was called: # once (7µs+0s) by Safe::BEGIN@46 at line 13
use XSLoader;
# spent 7µs making 1 call to Opcode::BEGIN@13
14
15
# spent 13µs within Opcode::BEGIN@15 which was called: # once (13µs+0s) by Safe::BEGIN@46 at line 24
BEGIN {
1616µs @ISA = qw(Exporter);
1717µs @EXPORT_OK = qw(
18 opset ops_to_opset
19 opset_to_ops opset_to_hex invert_opset
20 empty_opset full_opset
21 opdesc opcodes opmask define_optag
22 opmask_add verify_opset opdump
23 );
24141µs113µs}
# spent 13µs making 1 call to Opcode::BEGIN@15
25
26sub opset (;@);
27sub opset_to_hex ($);
28sub opdump (;$);
292560µs2337µs
# spent 261µs (184+77) within Opcode::BEGIN@29 which was called: # once (184µs+77µs) by Safe::BEGIN@46 at line 29
use subs @EXPORT_OK;
# spent 261µs making 1 call to Opcode::BEGIN@29 # spent 77µs making 1 call to subs::import
30
311754µs1742µsXSLoader::load();
# spent 742µs making 1 call to XSLoader::load
32
3313µs12.22ms_init_optags();
# spent 2.22ms making 1 call to Opcode::_init_optags
34
35sub ops_to_opset { opset @_ } # alias for old name
36
37sub opset_to_hex ($) {
38 return "(invalid opset)" unless verify_opset($_[0]);
39 unpack("h*",$_[0]);
40}
41
42sub opdump (;$) {
43 my $pat = shift;
44 # handy utility: perl -MOpcode=opdump -e 'opdump File'
45 foreach(opset_to_ops(full_opset)) {
46 my $op = sprintf " %12s %s\n", $_, opdesc($_);
47 next if defined $pat and $op !~ m/$pat/i;
48 print $op;
49 }
50}
51
- -
54
# spent 2.22ms (1.84+375µs) within Opcode::_init_optags which was called: # once (1.84ms+375µs) by Safe::BEGIN@46 at line 33
sub _init_optags {
551400ns my(%all, %seen);
561140µs245µs @all{opset_to_ops(full_opset)} = (); # keys only
# spent 43µs making 1 call to Opcode::opset_to_ops # spent 2µs making 1 call to Opcode::full_opset
57
581500ns local($_);
5913µs local($/) = "\n=cut"; # skip to optags definition section
60143µs136µs <DATA>;
# spent 36µs making 1 call to Opcode::CORE:readline
6111µs $/ = "\n="; # now read in 'pod section' chunks
62126µs811µs while(<DATA>) {
# spent 11µs making 8 calls to Opcode::CORE:readline, avg 1µs/call
632690µs2644µs next unless m/^item\s+(:\w+)/;
# spent 44µs making 26 calls to Opcode::CORE:match, avg 2µs/call
641918µs my $tag = $1;
65
66 # Split into lines, keep only indented lines
67309794µs29084µs my @lines = grep { m/^\s/ } split(/\n/);
# spent 84µs making 290 calls to Opcode::CORE:match, avg 290ns/call
68120224µs10143µs foreach (@lines) { s/--.*// } # delete comments
# spent 43µs making 101 calls to Opcode::CORE:subst, avg 430ns/call
69120157µs my @ops = map { split ' ' } @lines; # get op words
70
711911µs foreach(@ops) {
7238276µs warn "$tag - $_ already tagged in $seen{$_}\n" if $seen{$_};
73382173µs $seen{$_} = $tag;
74382152µs delete $all{$_};
75 }
76 # opset will croak on invalid names
7719249µs57103µs define_optag($tag, opset(@ops));
# spent 64µs making 19 calls to Opcode::opset, avg 3µs/call # spent 22µs making 19 calls to Opcode::define_optag, avg 1µs/call # spent 18µs making 19 calls to Opcode::CORE:readline, avg 947ns/call
78 }
79124µs18µs close(DATA);
# spent 8µs making 1 call to Opcode::CORE:close
80140µs warn "Untagged opnames: ".join(' ',keys %all)."\n" if %all;
81}
82
83
8417µs1;
85
86__DATA__
 
# spent 8µs within Opcode::CORE:close which was called: # once (8µs+0s) by Opcode::_init_optags at line 79
sub Opcode::CORE:close; # opcode
# spent 128µs within Opcode::CORE:match which was called 316 times, avg 407ns/call: # 290 times (84µs+0s) by Opcode::_init_optags at line 67, avg 290ns/call # 26 times (44µs+0s) by Opcode::_init_optags at line 63, avg 2µs/call
sub Opcode::CORE:match; # opcode
# spent 65µs within Opcode::CORE:readline which was called 28 times, avg 2µs/call: # 19 times (18µs+0s) by Opcode::_init_optags at line 77, avg 947ns/call # 8 times (11µs+0s) by Opcode::_init_optags at line 62, avg 1µs/call # once (36µs+0s) by Opcode::_init_optags at line 60
sub Opcode::CORE:readline; # opcode
# spent 43µs within Opcode::CORE:subst which was called 101 times, avg 430ns/call: # 101 times (43µs+0s) by Opcode::_init_optags at line 68, avg 430ns/call
sub Opcode::CORE:subst; # opcode
# spent 173µs (49+124) within Opcode::_safe_call_sv which was called 2 times, avg 87µs/call: # 2 times (49µs+124µs) by Safe::reval at line 360 of Safe.pm, avg 87µs/call
sub Opcode::_safe_call_sv; # xsub
# spent 6µs within Opcode::_safe_pkg_prep which was called: # once (6µs+0s) by Safe::new at line 173 of Safe.pm
sub Opcode::_safe_pkg_prep; # xsub
# spent 22µs within Opcode::define_optag which was called 19 times, avg 1µs/call: # 19 times (22µs+0s) by Opcode::_init_optags at line 77, avg 1µs/call
sub Opcode::define_optag; # xsub
# spent 2µs within Opcode::full_opset which was called: # once (2µs+0s) by Opcode::_init_optags at line 56
sub Opcode::full_opset; # xsub
# spent 2µs within Opcode::invert_opset which was called 2 times, avg 1µs/call: # once (1µs+0s) by Safe::permit_only at line 259 of Safe.pm # once (1µs+0s) by Safe::permit at line 255 of Safe.pm
sub Opcode::invert_opset; # xsub
# spent 67µs within Opcode::opset which was called 21 times, avg 3µs/call: # 19 times (64µs+0s) by Opcode::_init_optags at line 77, avg 3µs/call # once (2µs+0s) by Safe::permit_only at line 259 of Safe.pm # once (1µs+0s) by Safe::permit at line 255 of Safe.pm
sub Opcode::opset; # xsub
# spent 43µs within Opcode::opset_to_ops which was called: # once (43µs+0s) by Opcode::_init_optags at line 56
sub Opcode::opset_to_ops; # xsub