← Index
NYTProf Performance Profile   « block view • line view • sub view »
For /usr/share/koha/opac/cgi-bin/opac/opac-search.pl
  Run on Tue Oct 15 11:58:52 2013
Reported on Tue Oct 15 12:01:29 2013

Filename/usr/share/perl5/MARC/Charset/Table.pm
StatementsExecuted 32 statements in 1.06ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
111712µs3.79msMARC::Charset::Table::::BEGIN@38MARC::Charset::Table::BEGIN@38
111488µs1.08msMARC::Charset::Table::::BEGIN@37MARC::Charset::Table::BEGIN@37
11125µs184µsMARC::Charset::Table::::newMARC::Charset::Table::new
11122µs3.92msMARC::Charset::Table::::BEGIN@36MARC::Charset::Table::BEGIN@36
11120µs110µsMARC::Charset::Table::::_initMARC::Charset::Table::_init
11119µs23µsMARC::Charset::Table::::BEGIN@34MARC::Charset::Table::BEGIN@34
11115µs64µsMARC::Charset::Table::::BEGIN@40MARC::Charset::Table::BEGIN@40
11110µs251µsMARC::Charset::Table::::BEGIN@39MARC::Charset::Table::BEGIN@39
11110µs21µsMARC::Charset::Table::::BEGIN@35MARC::Charset::Table::BEGIN@35
1118µs10µsMARC::Charset::Table::::db_pathMARC::Charset::Table::db_path
1112µs2µ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
- -
34328µs226µs
# spent 23µs (19+4) within MARC::Charset::Table::BEGIN@34 which was called: # once (19µs+4µs) by MARC::Charset::BEGIN@13 at line 34
use strict;
# spent 23µs making 1 call to MARC::Charset::Table::BEGIN@34 # spent 4µs making 1 call to strict::import
35326µs233µs
# spent 21µs (10+12) within MARC::Charset::Table::BEGIN@35 which was called: # once (10µs+12µs) by MARC::Charset::BEGIN@13 at line 35
use warnings;
# spent 21µs making 1 call to MARC::Charset::Table::BEGIN@35 # spent 12µs making 1 call to warnings::import
36361µs27.81ms
# spent 3.92ms (22µs+3.89) within MARC::Charset::Table::BEGIN@36 which was called: # once (22µs+3.89ms) by MARC::Charset::BEGIN@13 at line 36
use POSIX;
# spent 3.92ms making 1 call to MARC::Charset::Table::BEGIN@36 # spent 3.89ms making 1 call to POSIX::import
373179µs21.25ms
# spent 1.08ms (488µs+594µs) within MARC::Charset::Table::BEGIN@37 which was called: # once (488µs+594µs) by MARC::Charset::BEGIN@13 at line 37
use GDBM_File;
# spent 1.08ms making 1 call to MARC::Charset::Table::BEGIN@37 # spent 169µs making 1 call to Exporter::import
383138µs23.80ms
# spent 3.79ms (712µs+3.08) within MARC::Charset::Table::BEGIN@38 which was called: # once (712µs+3.08ms) by MARC::Charset::BEGIN@13 at line 38
use MARC::Charset::Code;
# spent 3.79ms making 1 call to MARC::Charset::Table::BEGIN@38 # spent 8µs making 1 call to Class::Accessor::import
39341µs2492µs
# spent 251µs (10+241) within MARC::Charset::Table::BEGIN@39 which was called: # once (10µs+241µs) by MARC::Charset::BEGIN@13 at line 39
use MARC::Charset::Constants qw(:all);
# spent 251µs making 1 call to MARC::Charset::Table::BEGIN@39 # spent 241µs making 1 call to Exporter::import
403442µs2113µs
# spent 64µs (15+49) within MARC::Charset::Table::BEGIN@40 which was called: # once (15µs+49µs) by MARC::Charset::BEGIN@13 at line 40
use Storable qw(nfreeze thaw);
# spent 64µs making 1 call to MARC::Charset::Table::BEGIN@40 # spent 49µs making 1 call to Exporter::import
41
42=head2 new()
43
- -
48sub new
49
# spent 184µs (25+159) within MARC::Charset::Table::new which was called: # once (25µs+159µs) by MARC::File::SAX::BEGIN@14 at line 44 of MARC/Charset.pm
{
50421µs my $class = shift;
51 my $self = bless {}, ref($class) || $class;
522157µs $self->_init(&GDBM_READER);
# spent 110µs making 1 call to MARC::Charset::Table::_init # spent 47µs making 1 call to GDBM_File::AUTOLOAD
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 = nfreeze($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 10µs (8+2) within MARC::Charset::Table::db_path which was called: # once (8µs+2µs) by MARC::Charset::Table::_init at line 187
{
159312µs my $path = $INC{'MARC/Charset/Table.pm'};
16012µs $path =~ s/\.pm$//;
# spent 2µ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(&GDBM_WRCREAT);
178 return $self;
179}
180
181
182# helper function for initializing table internals
183
184sub _init
185
# spent 110µs (20+90) within MARC::Charset::Table::_init which was called: # once (20µs+90µs) by MARC::Charset::Table::new at line 52
{
1863101µs my ($self,$opts) = @_;
187290µs tie my %db, 'GDBM_File', db_path(), $opts, 0644;
# spent 81µs making 1 call to GDBM_File::TIEHASH # spent 10µs making 1 call to MARC::Charset::Table::db_path
188 $self->{db} = \%db;
189}
190
- -
19518µs1;
 
# spent 2µs within MARC::Charset::Table::CORE:subst which was called: # once (2µs+0s) by MARC::Charset::Table::db_path at line 160
sub MARC::Charset::Table::CORE:subst; # opcode