← 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 17:10:45 2013
Reported on Tue Oct 15 17:11:54 2013

Filename/usr/share/perl5/MARC/Charset/Table.pm
StatementsExecuted 32 statements in 1.28ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
111885µs4.30msMARC::Charset::Table::::BEGIN@38MARC::Charset::Table::BEGIN@38
111581µs1.40msMARC::Charset::Table::::BEGIN@37MARC::Charset::Table::BEGIN@37
11141µs245µsMARC::Charset::Table::::newMARC::Charset::Table::new
11122µs4.86msMARC::Charset::Table::::BEGIN@36MARC::Charset::Table::BEGIN@36
11122µs122µsMARC::Charset::Table::::_initMARC::Charset::Table::_init
11122µs27µsMARC::Charset::Table::::BEGIN@34MARC::Charset::Table::BEGIN@34
11120µs77µsMARC::Charset::Table::::BEGIN@40MARC::Charset::Table::BEGIN@40
11117µs40µsMARC::Charset::Table::::BEGIN@35MARC::Charset::Table::BEGIN@35
11113µs306µsMARC::Charset::Table::::BEGIN@39MARC::Charset::Table::BEGIN@39
11112µs16µ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
- -
34335µs232µs
# spent 27µs (22+5) within MARC::Charset::Table::BEGIN@34 which was called: # once (22µs+5µs) by MARC::Charset::BEGIN@13 at line 34
use strict;
# spent 27µs making 1 call to MARC::Charset::Table::BEGIN@34 # spent 5µs making 1 call to strict::import
35336µs263µs
# spent 40µs (17+23) within MARC::Charset::Table::BEGIN@35 which was called: # once (17µs+23µs) by MARC::Charset::BEGIN@13 at line 35
use warnings;
# spent 40µs making 1 call to MARC::Charset::Table::BEGIN@35 # spent 23µs making 1 call to warnings::import
36388µs29.69ms
# spent 4.86ms (22µs+4.84) within MARC::Charset::Table::BEGIN@36 which was called: # once (22µs+4.84ms) by MARC::Charset::BEGIN@13 at line 36
use POSIX;
# spent 4.86ms making 1 call to MARC::Charset::Table::BEGIN@36 # spent 4.84ms making 1 call to POSIX::import
373209µs21.60ms
# spent 1.40ms (581µs+818µs) within MARC::Charset::Table::BEGIN@37 which was called: # once (581µs+818µs) by MARC::Charset::BEGIN@13 at line 37
use GDBM_File;
# spent 1.40ms making 1 call to MARC::Charset::Table::BEGIN@37 # spent 196µs making 1 call to Exporter::import
383146µs24.31ms
# spent 4.30ms (885µs+3.41) within MARC::Charset::Table::BEGIN@38 which was called: # once (885µs+3.41ms) by MARC::Charset::BEGIN@13 at line 38
use MARC::Charset::Code;
# spent 4.30ms making 1 call to MARC::Charset::Table::BEGIN@38 # spent 9µs making 1 call to Class::Accessor::import
39340µs2599µs
# spent 306µs (13+293) within MARC::Charset::Table::BEGIN@39 which was called: # once (13µs+293µs) by MARC::Charset::BEGIN@13 at line 39
use MARC::Charset::Constants qw(:all);
# spent 306µs making 1 call to MARC::Charset::Table::BEGIN@39 # spent 293µs making 1 call to Exporter::import
403556µs2135µs
# spent 77µs (20+57) within MARC::Charset::Table::BEGIN@40 which was called: # once (20µs+57µs) by MARC::Charset::BEGIN@13 at line 40
use Storable qw(nfreeze thaw);
# spent 77µs making 1 call to MARC::Charset::Table::BEGIN@40 # spent 57µs making 1 call to Exporter::import
41
42=head2 new()
43
- -
48sub new
49
# spent 245µs (41+203) within MARC::Charset::Table::new which was called: # once (41µs+203µs) by MARC::File::SAX::BEGIN@14 at line 44 of MARC/Charset.pm
{
50438µs my $class = shift;
51 my $self = bless {}, ref($class) || $class;
522195µs $self->_init(&GDBM_READER);
# spent 122µs making 1 call to MARC::Charset::Table::_init # spent 73µ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 16µs (12+4) within MARC::Charset::Table::db_path which was called: # once (12µs+4µs) by MARC::Charset::Table::_init at line 187
{
159317µ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(&GDBM_WRCREAT);
178 return $self;
179}
180
181
182# helper function for initializing table internals
183
184sub _init
185
# spent 122µs (22+100) within MARC::Charset::Table::_init which was called: # once (22µs+100µs) by MARC::Charset::Table::new at line 52
{
1863108µs my ($self,$opts) = @_;
1872100µs tie my %db, 'GDBM_File', db_path(), $opts, 0644;
# spent 84µs making 1 call to GDBM_File::TIEHASH # spent 16µs making 1 call to MARC::Charset::Table::db_path
188 $self->{db} = \%db;
189}
190
- -
19519µ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