← Index
NYTProf Performance Profile   « block view • line view • sub view »
For conv.pl
  Run on Sun Nov 14 21:14:18 2010
Reported on Sun Nov 14 21:17:51 2010

Filename/usr/share/perl5/MARC/Charset/Table.pm
StatementsExecuted 32 statements in 1.58ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1111.24ms7.68msMARC::Charset::Table::::BEGIN@38MARC::Charset::Table::BEGIN@38
111965µs18.6msMARC::Charset::Table::::BEGIN@36MARC::Charset::Table::BEGIN@36
111620µs12.1msMARC::Charset::Table::::BEGIN@40MARC::Charset::Table::BEGIN@40
111293µs640µsMARC::Charset::Table::::BEGIN@37MARC::Charset::Table::BEGIN@37
11124µs105µsMARC::Charset::Table::::BEGIN@35MARC::Charset::Table::BEGIN@35
11124µs106µsMARC::Charset::Table::::_initMARC::Charset::Table::_init
11123µs32µsMARC::Charset::Table::::BEGIN@34MARC::Charset::Table::BEGIN@34
11121µs127µsMARC::Charset::Table::::newMARC::Charset::Table::new
11119µs540µsMARC::Charset::Table::::BEGIN@39MARC::Charset::Table::BEGIN@39
11115µs19µsMARC::Charset::Table::::db_pathMARC::Charset::Table::db_path
1114µs4µsMARC::Charset::Table::::CORE:substMARC::Charset::Table::CORE:subst (opcode)
0000s0sMARC::Charset::Table::::add_codeMARC::Charset::Table::add_code
0000s0sMARC::Charset::Table::::brand_newMARC::Charset::Table::brand_new
0000s0sMARC::Charset::Table::::dbMARC::Charset::Table::db
0000s0sMARC::Charset::Table::::get_codeMARC::Charset::Table::get_code
0000s0sMARC::Charset::Table::::lookup_by_marc8MARC::Charset::Table::lookup_by_marc8
0000s0sMARC::Charset::Table::::lookup_by_utf8MARC::Charset::Table::lookup_by_utf8
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package MARC::Charset::Table;
2
3=head1 NAME
4
- -
34342µs241µs
# spent 32µs (23+9) within MARC::Charset::Table::BEGIN@34 which was called: # once (23µs+9µs) by MARC::Charset::BEGIN@13 at line 34
use strict;
# spent 32µs making 1 call to MARC::Charset::Table::BEGIN@34 # spent 9µs making 1 call to strict::import
35343µs2186µs
# spent 105µs (24+81) within MARC::Charset::Table::BEGIN@35 which was called: # once (24µs+81µs) by MARC::Charset::BEGIN@13 at line 35
use warnings;
# spent 105µs making 1 call to MARC::Charset::Table::BEGIN@35 # spent 81µs making 1 call to warnings::import
363163µs230.1ms
# spent 18.6ms (965µs+17.7) within MARC::Charset::Table::BEGIN@36 which was called: # once (965µs+17.7ms) by MARC::Charset::BEGIN@13 at line 36
use POSIX;
# spent 18.6ms making 1 call to MARC::Charset::Table::BEGIN@36 # spent 11.5ms making 1 call to POSIX::import
373167µs1640µs
# spent 640µs (293+347) within MARC::Charset::Table::BEGIN@37 which was called: # once (293µs+347µs) by MARC::Charset::BEGIN@13 at line 37
use SDBM_File;
# spent 640µs making 1 call to MARC::Charset::Table::BEGIN@37
383175µs17.68ms
# spent 7.68ms (1.24+6.44) within MARC::Charset::Table::BEGIN@38 which was called: # once (1.24ms+6.44ms) by MARC::Charset::BEGIN@13 at line 38
use MARC::Charset::Code;
# spent 7.68ms making 1 call to MARC::Charset::Table::BEGIN@38
39366µs21.06ms
# spent 540µs (19+521) within MARC::Charset::Table::BEGIN@39 which was called: # once (19µs+521µs) by MARC::Charset::BEGIN@13 at line 39
use MARC::Charset::Constants qw(:all);
# spent 540µs making 1 call to MARC::Charset::Table::BEGIN@39 # spent 521µs making 1 call to Exporter::import
403783µs212.2ms
# spent 12.1ms (620µs+11.5) within MARC::Charset::Table::BEGIN@40 which was called: # once (620µs+11.5ms) by MARC::Charset::BEGIN@13 at line 40
use Storable qw(freeze thaw);
# spent 12.1ms making 1 call to MARC::Charset::Table::BEGIN@40 # spent 168µs making 1 call to Exporter::import
41
42=head2 new()
43
- -
48sub new
49
# spent 127µs (21+106) within MARC::Charset::Table::new which was called: # once (21µs+106µs) by MARC::File::SAX::BEGIN@14 at line 44 of MARC/Charset.pm
{
50420µs my $class = shift;
51 my $self = bless {}, ref($class) || $class;
521106µs $self->_init(O_RDONLY);
# spent 106µs making 1 call to MARC::Charset::Table::_init
53 return $self;
54}
55
56
57=head2 add_code()
58
- -
64sub add_code
65{
66 my ($self, $code) = @_;
67
68 # the Code object is serialized
69 my $frozen = freeze($code);
70
71 # to support lookup by marc8 and utf8 values we
72 # stash away the rule in the db using two keys
73 my $marc8_key = $code->marc8_hash_code();
74 my $utf8_key = $code->utf8_hash_code();
75
76 # stash away the marc8 lookup key
77 $self->{db}->{$marc8_key} = $frozen;
78
79 # stash away the utf8 lookup key (only if it's not already there!)
80 # this means that the sets that appear in the xml file will have
81 # precedence ascii/ansel
82 $self->{db}->{$utf8_key} = $frozen unless exists $self->{db}->{$utf8_key};
83}
84
85
86=head2 get_code()
87
- -
92sub get_code
93{
94 my ($self, $key) = @_;
95 my $db = $self->db();
96 my $frozen = $db->{$key};
97 return thaw($frozen) if $frozen;
98 return undef;
99}
100
101
102=head2 lookup_by_marc8()
103
- -
112sub lookup_by_marc8
113{
114 my ($self, $charset, $marc8) = @_;
115 $charset = BASIC_LATIN if $charset eq ASCII_DEFAULT;
116 return $self->get_code(sprintf('%s:%s', $charset, $marc8));
117}
118
119
120=head2 lookup_by_utf8()
121
- -
126sub lookup_by_utf8
127{
128 my ($self, $value) = @_;
129 return $self->get_code(ord($value));
130}
131
- -
135=head2 db()
136
- -
142sub db
143{
144 return shift->{db};
145}
146
147
148=head2 db_path()
149
- -
157sub db_path
158
# spent 19µs (15+4) within MARC::Charset::Table::db_path which was called: # once (15µs+4µs) by MARC::Charset::Table::_init at line 187
{
159321µs my $path = $INC{'MARC/Charset/Table.pm'};
16014µs $path =~ s/\.pm$//;
# spent 4µs making 1 call to MARC::Charset::Table::CORE:subst
161 return $path;
162}
163
164
165=head2 brand_new()
166
- -
173sub brand_new
174{
175 my $class = shift;
176 my $self = bless {}, ref($class) || $class;
177 $self->_init(O_CREAT|O_RDWR);
178 return $self;
179}
180
181
182# helper function for initializing table internals
183
184sub _init
185
# spent 106µs (24+82) within MARC::Charset::Table::_init which was called: # once (24µs+82µs) by MARC::Charset::Table::new at line 52
{
186388µs my ($self,$opts) = @_;
187282µs tie my %db, 'SDBM_File', db_path(), $opts, 0644;
# spent 63µs making 1 call to SDBM_File::TIEHASH # spent 19µs making 1 call to MARC::Charset::Table::db_path
188 $self->{db} = \%db;
189}
190
- -
19518µs1;
 
# spent 4µs within MARC::Charset::Table::CORE:subst which was called: # once (4µs+0s) by MARC::Charset::Table::db_path at line 160
sub MARC::Charset::Table::CORE:subst; # opcode