Filename | /usr/share/perl/5.20/Exporter.pm |
Statements | Executed 5548 statements in 21.2ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
354 | 349 | 158 | 16.4ms | 25.8ms | import | Exporter::
69 | 4 | 1 | 4.08ms | 4.36ms | as_heavy | Exporter::
1717 | 2 | 1 | 680µs | 680µs | CORE:match (opcode) | Exporter::
1578 | 2 | 1 | 502µs | 502µs | CORE:subst (opcode) | Exporter::
61 | 4 | 3 | 249µs | 894µs | export | Exporter::
6 | 2 | 2 | 27µs | 116µs | export_to_level | Exporter::
1 | 1 | 1 | 7µs | 37µs | export_tags | Exporter::
1 | 1 | 1 | 6µs | 3.61ms | export_ok_tags | Exporter::
0 | 0 | 0 | 0s | 0s | __ANON__[:64] | Exporter::
0 | 0 | 0 | 0s | 0s | export_fail | Exporter::
0 | 0 | 0 | 0s | 0s | require_version | Exporter::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package Exporter; | ||||
2 | |||||
3 | 1 | 12µs | require 5.006; | ||
4 | |||||
5 | # Be lean. | ||||
6 | #use strict; | ||||
7 | #no strict 'refs'; | ||||
8 | |||||
9 | 1 | 400ns | our $Debug = 0; | ||
10 | 1 | 200ns | our $ExportLevel = 0; | ||
11 | 1 | 300ns | our $Verbose ||= 0; | ||
12 | 1 | 400ns | our $VERSION = '5.71'; | ||
13 | 1 | 300ns | our (%Cache); | ||
14 | |||||
15 | # spent 4.36ms (4.08+289µs) within Exporter::as_heavy which was called 69 times, avg 63µs/call:
# 61 times (463µs+182µs) by Exporter::export at line 25, avg 11µs/call
# 6 times (64µs+25µs) by Exporter::export_to_level at line 81, avg 15µs/call
# once (3.53ms+73µs) by Exporter::export_ok_tags at line 89
# once (22µs+8µs) by Exporter::export_tags at line 85 | ||||
16 | 69 | 1.82ms | require Exporter::Heavy; | ||
17 | # Unfortunately, this does not work if the caller is aliased as *name = \&foo | ||||
18 | # Thus the need to create a lot of identical subroutines | ||||
19 | 69 | 159µs | my $c = (caller(1))[3]; | ||
20 | 69 | 378µs | 69 | 221µs | $c =~ s/.*:://; # spent 221µs making 69 calls to Exporter::CORE:subst, avg 3µs/call |
21 | 69 | 275µs | \&{"Exporter::Heavy::heavy_$c"}; | ||
22 | } | ||||
23 | |||||
24 | # spent 894µs (249+646) within Exporter::export which was called 61 times, avg 15µs/call:
# 53 times (222µs+592µs) by Exporter::import at line 62, avg 15µs/call
# 6 times (21µs+35µs) by Exporter::Heavy::heavy_export_to_level at line 205 of Exporter/Heavy.pm, avg 9µs/call
# once (4µs+12µs) by FileHandle::import at line 73 of FileHandle.pm
# once (2µs+6µs) by FileHandle::import at line 81 of FileHandle.pm | ||||
25 | 61 | 270µs | 122 | 9.08ms | goto &{as_heavy()}; # spent 8.43ms making 61 calls to Exporter::Heavy::heavy_export, avg 138µs/call
# spent 646µs making 61 calls to Exporter::as_heavy, avg 11µs/call |
26 | } | ||||
27 | |||||
28 | # spent 25.8ms (16.4+9.31) within Exporter::import which was called 354 times, avg 73µs/call:
# 6 times (917µs+1.78ms) by POSIX::import at line 30 of POSIX.pm, avg 449µs/call
# once (3.84ms+56µs) by MARC::File::XML::BEGIN@12 at line 12 of MARC/File/XML.pm
# once (128µs+302µs) by C4::Koha::BEGIN@32 at line 32 of C4/Koha.pm
# once (15µs+358µs) by DBD::mysql::dr::BEGIN@112 at line 112 of DBD/mysql.pm
# once (344µs+20µs) by Mail::Sendmail::BEGIN@54 at line 54 of Mail/Sendmail.pm
# once (32µs+298µs) by C4::Reserves::BEGIN@27 at line 27 of C4/Reserves.pm
# once (24µs+303µs) by C4::Circulation::BEGIN@27 at line 27 of C4/Circulation.pm
# once (22µs+304µs) by main::BEGIN@73 at line 73 of svc/members/upsert
# once (22µs+280µs) by C4::Members::BEGIN@33 at line 33 of C4/Members.pm
# once (24µs+272µs) by C4::Circulation::BEGIN@28 at line 28 of C4/Circulation.pm
# once (264µs+21µs) by IO::Seekable::BEGIN@12 at line 12 of IO/Seekable.pm
# once (16µs+267µs) by C4::Items::BEGIN@27 at line 27 of C4/Items.pm
# once (14µs+268µs) by DBD::mysql::db::BEGIN@197 at line 197 of DBD/mysql.pm
# once (29µs+240µs) by C4::Overdues::BEGIN@26 at line 26 of C4/Overdues.pm
# once (22µs+228µs) by C4::Items::BEGIN@26 at line 26 of C4/Items.pm
# once (226µs+14µs) by Date::Calc::BEGIN@18 at line 30 of Date/Calc.pm
# once (238µs+2µs) by C4::Members::BEGIN@40 at line 40 of C4/Members.pm
# once (18µs+221µs) by C4::Biblio::BEGIN@33 at line 33 of C4/Biblio.pm
# once (27µs+183µs) by C4::Auth::BEGIN@31 at line 31 of C4/Auth.pm
# once (20µs+183µs) by C4::Members::BEGIN@31 at line 31 of C4/Members.pm
# once (57µs+137µs) by C4::Templates::BEGIN@34 at line 34 of C4/Templates.pm
# once (40µs+137µs) by MARC::Charset::Code::BEGIN@8 at line 8 of MARC/Charset/Code.pm
# once (165µs+8µs) by File::Temp::BEGIN@14 at line 14 of File/Temp.pm
# once (15µs+147µs) by MARC::Charset::BEGIN@15 at line 15 of MARC/Charset.pm
# once (23µs+120µs) by C4::Biblio::BEGIN@39 at line 39 of C4/Biblio.pm
# once (15µs+125µs) by C4::Budgets::BEGIN@24 at line 24 of C4/Budgets.pm
# once (130µs+8µs) by Modern::Perl::BEGIN@16 at line 25 of IO/File.pm
# once (128µs+10µs) by POSIX::BEGIN@11 at line 11 of POSIX.pm
# once (14µs+122µs) by MARC::Charset::Table::BEGIN@44 at line 44 of MARC/Charset/Table.pm
# once (18µs+117µs) by C4::Reserves::BEGIN@31 at line 31 of C4/Reserves.pm
# once (21µs+107µs) by C4::Members::BEGIN@30 at line 30 of C4/Members.pm
# once (34µs+92µs) by C4::Service::BEGIN@50 at line 50 of C4/Service.pm
# once (118µs+6µs) by C4::Overdues::BEGIN@25 at line 1 of (eval 28)[Date/Manip.pm:33]
# once (112µs+10µs) by C4::Context::BEGIN@3 at line 3 of ZOOM.pm
# once (22µs+98µs) by C4::Members::BEGIN@29 at line 29 of C4/Members.pm
# once (18µs+98µs) by C4::Biblio::BEGIN@36 at line 36 of C4/Biblio.pm
# once (110µs+6µs) by C4::Circulation::BEGIN@29 at line 29 of C4/Circulation.pm
# once (107µs+8µs) by CGI::BEGIN@9 at line 9 of CGI.pm
# once (18µs+96µs) by C4::Reserves::BEGIN@36 at line 36 of C4/Reserves.pm
# once (81µs+32µs) by C4::Letters::BEGIN@26 at line 26 of C4/Letters.pm
# once (105µs+6µs) by Date::Manip::Recur::BEGIN@22 at line 22 of Date/Manip/Recur.pm
# once (106µs+5µs) by Date::Manip::Delta::BEGIN@21 at line 21 of Date/Manip/Delta.pm
# once (18µs+91µs) by C4::Overdues::BEGIN@28 at line 28 of C4/Overdues.pm
# once (14µs+95µs) by Storable::BEGIN@53 at line 54 of Storable.pm
# once (101µs+8µs) by C4::Reserves::BEGIN@29 at line 29 of C4/Reserves.pm
# once (99µs+8µs) by Module::Load::Conditional::BEGIN@11 at line 39 of FileHandle.pm
# once (18µs+87µs) by C4::Message::BEGIN@25 at line 25 of C4/Message.pm
# once (14µs+90µs) by C4::Circulation::BEGIN@33 at line 33 of C4/Circulation.pm
# once (24µs+78µs) by C4::Context::BEGIN@104 at line 104 of C4/Context.pm
# once (97µs+5µs) by Date::Manip::Obj::BEGIN@12 at line 12 of Date/Manip/Obj.pm
# once (96µs+6µs) by Date::Manip::TZ::BEGIN@22 at line 22 of Date/Manip/TZ.pm
# once (74µs+26µs) by C4::Output::BEGIN@35 at line 35 of C4/Output.pm
# once (16µs+83µs) by C4::Items::BEGIN@30 at line 30 of C4/Items.pm
# once (92µs+5µs) by Module::Metadata::BEGIN@20 at line 20 of Module/Metadata.pm
# once (14µs+83µs) by C4::Members::BEGIN@32 at line 32 of C4/Members.pm
# once (87µs+7µs) by C4::Dates::BEGIN@29 at line 29 of C4/Dates.pm
# once (23µs+69µs) by C4::Stats::BEGIN@25 at line 25 of C4/Stats.pm
# once (18µs+73µs) by C4::Members::BEGIN@37 at line 37 of C4/Members.pm
# once (85µs+5µs) by Date::Manip::TZ_Base::BEGIN@12 at line 12 of Date/Manip/TZ_Base.pm
# once (22µs+67µs) by C4::ClassSource::BEGIN@25 at line 25 of C4/ClassSource.pm
# once (83µs+6µs) by Date::Manip::Date::BEGIN@22 at line 22 of Date/Manip/Date.pm
# once (74µs+15µs) by C4::Service::BEGIN@49 at line 49 of C4/Service.pm
# once (24µs+64µs) by DBD::mysql::dr::BEGIN@113 at line 113 of DBD/mysql.pm
# once (18µs+66µs) by C4::Letters::BEGIN@32 at line 32 of C4/Letters.pm
# once (14µs+70µs) by C4::Members::BEGIN@34 at line 34 of C4/Members.pm
# once (18µs+64µs) by C4::Accounts::BEGIN@24 at line 24 of C4/Accounts.pm
# once (21µs+60µs) by C4::Auth_with_cas::BEGIN@23 at line 23 of C4/Auth_with_cas.pm
# once (73µs+5µs) by Date::Manip::Base::BEGIN@24 at line 24 of Date/Manip/Base.pm
# once (73µs+4µs) by C4::Letters::BEGIN@29 at line 29 of C4/Letters.pm
# once (15µs+62µs) by C4::VirtualShelves::BEGIN@25 at line 25 of C4/VirtualShelves.pm
# once (15µs+61µs) by C4::Dates::BEGIN@26 at line 26 of C4/Dates.pm
# once (14µs+61µs) by C4::Letters::BEGIN@24 at line 24 of C4/Letters.pm
# once (69µs+5µs) by C4::Auth::BEGIN@30 at line 30 of C4/Auth.pm
# once (54µs+18µs) by C4::Koha::BEGIN@27 at line 27 of C4/Koha.pm
# once (66µs+5µs) by C4::Items::BEGIN@32 at line 32 of C4/Items.pm
# once (66µs+4µs) by C4::Circulation::BEGIN@37 at line 37 of C4/Circulation.pm
# once (16µs+52µs) by C4::Circulation::BEGIN@36 at line 36 of C4/Circulation.pm
# once (16µs+49µs) by C4::Circulation::BEGIN@26 at line 26 of C4/Circulation.pm
# once (16µs+48µs) by C4::Charset::BEGIN@26 at line 26 of C4/Charset.pm
# once (14µs+50µs) by C4::Biblio::BEGIN@35 at line 35 of C4/Biblio.pm
# once (60µs+4µs) by IO::File::BEGIN@8 at line 8 of IO/File.pm
# once (56µs+5µs) by C4::Overdues::BEGIN@25 at line 25 of C4/Overdues.pm
# once (51µs+8µs) by C4::Templates::BEGIN@35 at line 35 of C4/Templates.pm
# once (54µs+5µs) by Data::OptList::BEGIN@10 at line 95 of Params/Util.pm
# once (51µs+7µs) by MIME::Types::BEGIN@16 at line 34 of List/Util.pm
# once (14µs+44µs) by C4::Budgets::BEGIN@25 at line 25 of C4/Budgets.pm
# once (13µs+44µs) by C4::Items::BEGIN@31 at line 31 of C4/Items.pm
# once (53µs+4µs) by Template::Provider::BEGIN@47 at line 47 of Template/Provider.pm
# once (49µs+4µs) by DateTime::TimeZone::OffsetOnly::BEGIN@9 at line 9 of DateTime/TimeZone/OffsetOnly.pm
# once (13µs+39µs) by C4::SQLHelper::BEGIN@26 at line 26 of C4/SQLHelper.pm
# once (48µs+2µs) by C4::Biblio::BEGIN@37 at line 37 of C4/Biblio.pm
# once (47µs+4µs) by XML::Simple::BEGIN@41 at line 41 of XML/Simple.pm
# once (46µs+4µs) by Params::Check::BEGIN@5 at line 5 of Params/Check.pm
# once (48µs+3µs) by IO::Handle::BEGIN@6 at line 6 of IO/Handle.pm
# once (13µs+37µs) by C4::Overdues::BEGIN@30 at line 30 of C4/Overdues.pm
# once (47µs+3µs) by Params::Validate::BEGIN@10 at line 10 of Params/Validate.pm
# once (46µs+3µs) by IO::BEGIN@6 at line 6 of IO.pm
# once (45µs+3µs) by C4::Letters::BEGIN@28 at line 28 of C4/Letters.pm
# once (44µs+3µs) by SelectSaver::BEGIN@6 at line 6 of SelectSaver.pm
# once (45µs+2µs) by IO::File::BEGIN@9 at line 9 of IO/File.pm
# once (43µs+3µs) by IO::Seekable::BEGIN@6 at line 6 of IO/Seekable.pm
# once (42µs+4µs) by C4::Members::BEGIN@35 at line 35 of C4/Members.pm
# once (43µs+3µs) by MARC::File::Encode::BEGIN@22 at line 22 of MARC/File/Encode.pm
# once (42µs+3µs) by FindBin::BEGIN@80 at line 80 of FindBin.pm
# once (42µs+2µs) by DateTime::TimeZone::BEGIN@15 at line 15 of DateTime/TimeZone.pm
# once (42µs+2µs) by DateTime::Format::Builder::BEGIN@12 at line 12 of DateTime/Format/Builder.pm
# once (41µs+2µs) by C4::Auth::BEGIN@22 at line 22 of C4/Auth.pm
# once (40µs+4µs) by File::Path::BEGIN@6 at line 6 of File/Path.pm
# once (41µs+2µs) by DateTime::BEGIN@16 at line 17 of DateTime.pm
# once (40µs+2µs) by C4::Circulation::BEGIN@50 at line 50 of C4/Circulation.pm
# once (39µs+2µs) by Date::Manip::Obj::BEGIN@13 at line 13 of Date/Manip/Obj.pm
# once (39µs+2µs) by IO::Handle::BEGIN@7 at line 7 of IO/Handle.pm
# once (40µs+2µs) by C4::Letters::BEGIN@35 at line 35 of C4/Letters.pm
# once (39µs+2µs) by C4::Letters::BEGIN@23 at line 571 of MIME/Lite.pm
# once (35µs+6µs) by C4::Accounts::BEGIN@27 at line 27 of C4/Accounts.pm
# once (38µs+2µs) by C4::Circulation::BEGIN@52 at line 52 of C4/Circulation.pm
# once (37µs+2µs) by C4::Boolean::BEGIN@27 at line 27 of C4/Boolean.pm
# once (37µs+2µs) by SelectSaver::BEGIN@7 at line 7 of SelectSaver.pm
# once (36µs+3µs) by C4::Auth::BEGIN@24 at line 24 of C4/Auth.pm
# once (35µs+3µs) by DateTime::Locale::BEGIN@12 at line 12 of DateTime/Locale.pm
# once (36µs+2µs) by Tie::Hash::BEGIN@5 at line 5 of Tie/Hash.pm
# once (36µs+2µs) by DateTime::Format::Strptime::BEGIN@10 at line 10 of DateTime/Format/Strptime.pm
# once (35µs+2µs) by Koha::AuthUtils::BEGIN@21 at line 21 of Koha/AuthUtils.pm
# once (35µs+2µs) by C4::Output::BEGIN@31 at line 31 of C4/Output.pm
# once (35µs+2µs) by CGI::Session::Driver::BEGIN@6 at line 6 of CGI/Session/Driver.pm
# once (35µs+2µs) by Module::Load::Conditional::BEGIN@6 at line 6 of Module/Load/Conditional.pm
# once (34µs+3µs) by DateTime::TimeZone::Local::BEGIN@6 at line 6 of DateTime/TimeZone/Local.pm
# once (35µs+2µs) by C4::Items::BEGIN@24 at line 24 of C4/Items.pm
# once (35µs+2µs) by C4::Context::BEGIN@102 at line 98 of XML/Simple.pm
# once (34µs+2µs) by DateTime::Span::BEGIN@12 at line 12 of DateTime/Span.pm
# once (34µs+2µs) by CGI::Session::BEGIN@3 at line 3 of CGI/Session.pm
# once (34µs+2µs) by Koha::Calendar::BEGIN@10 at line 10 of Koha/Calendar.pm
# once (34µs+2µs) by Params::Validate::XS::BEGIN@6 at line 6 of Params/Validate/XS.pm
# once (34µs+2µs) by CGI::Session::Driver::mysql::BEGIN@6 at line 6 of CGI/Session/Driver/mysql.pm
# once (34µs+2µs) by IO::File::BEGIN@11 at line 11 of IO/File.pm
# once (34µs+2µs) by C4::Templates::BEGIN@5 at line 5 of C4/Templates.pm
# once (32µs+3µs) by C4::Members::BEGIN@41 at line 41 of C4/Members.pm
# once (33µs+2µs) by Try::Tiny::BEGIN@15 at line 15 of Try/Tiny.pm
# once (29µs+6µs) by DateTime::Format::DateParse::BEGIN@14 at line 14 of DateTime/Format/DateParse.pm
# once (33µs+2µs) by Template::BEGIN@31 at line 31 of Template.pm
# once (34µs+1µs) by DateTime::Set::BEGIN@5 at line 5 of DateTime/Set.pm
# once (34µs+1µs) by XML::Parser::BEGIN@15 at line 15 of XML/Parser.pm
# once (33µs+2µs) by C4::Context::BEGIN@107 at line 107 of C4/Context.pm
# once (33µs+2µs) by CGI::Cookie::BEGIN@10 at line 10 of CGI/Cookie.pm
# once (33µs+1µs) by C4::Auth::BEGIN@32 at line 32 of C4/Auth.pm
# once (33µs+1µs) by DateTime::Format::Builder::Parser::Quick::BEGIN@8 at line 8 of DateTime/Format/Builder/Parser/Quick.pm
# once (32µs+2µs) by DateTime::SpanSet::BEGIN@13 at line 13 of DateTime/SpanSet.pm
# once (31µs+2µs) by MARC::File::XML::BEGIN@11 at line 11 of MARC/File/XML.pm
# once (32µs+2µs) by C4::Dates::BEGIN@24 at line 24 of C4/Dates.pm
# once (31µs+3µs) by C4::Items::BEGIN@33 at line 33 of C4/Items.pm
# once (32µs+2µs) by MARC::Field::BEGIN@6 at line 6 of MARC/Field.pm
# once (31µs+2µs) by Set::Infinite::Basic::BEGIN@11 at line 11 of Set/Infinite/Basic.pm
# once (32µs+1µs) by MIME::Type::BEGIN@12 at line 12 of MIME/Type.pm
# once (31µs+2µs) by C4::Linker::BEGIN@47 at line 47 of C4/Linker.pm
# once (31µs+2µs) by DateTime::Format::Builder::Parser::BEGIN@8 at line 8 of DateTime/Format/Builder/Parser.pm
# once (30µs+3µs) by C4::Members::BEGIN@26 at line 26 of C4/Members.pm
# once (31µs+2µs) by C4::Biblio::BEGIN@24 at line 24 of C4/Biblio.pm
# once (31µs+2µs) by DateTime::BEGIN@11 at line 11 of DateTime.pm
# once (31µs+1µs) by C4::Auth::BEGIN@34 at line 34 of C4/Auth.pm
# once (30µs+2µs) by C4::Service::BEGIN@47 at line 47 of C4/Service.pm
# once (30µs+2µs) by Set::Infinite::BEGIN@17 at line 17 of Set/Infinite.pm
# once (31µs+1µs) by DateTime::Format::Builder::Parser::Regex::BEGIN@10 at line 10 of DateTime/Format/Builder/Parser/Regex.pm
# once (30µs+1µs) by C4::Charset::BEGIN@27 at line 27 of C4/Charset.pm
# once (30µs+2µs) by C4::Languages::BEGIN@24 at line 24 of C4/Languages.pm
# once (30µs+2µs) by XML::SAX::BEGIN@15 at line 15 of XML/SAX.pm
# once (29µs+2µs) by File::Temp::BEGIN@10 at line 10 of File/Temp.pm
# once (26µs+5µs) by C4::Members::BEGIN@27 at line 27 of C4/Members.pm
# once (31µs+0s) by Template::Constants::BEGIN@24 at line 24 of Template/Constants.pm
# once (29µs+2µs) by Time::Local::BEGIN@4 at line 4 of Time/Local.pm
# once (29µs+1µs) by C4::Members::BEGIN@28 at line 28 of C4/Members.pm
# once (29µs+1µs) by C4::Overdues::BEGIN@29 at line 29 of C4/Overdues.pm
# once (28µs+2µs) by MIME::Types::BEGIN@262 at line 262 of MIME/Types.pm
# once (28µs+2µs) by C4::ItemCirculationAlertPreference::BEGIN@25 at line 25 of C4/ItemCirculationAlertPreference.pm
# once (28µs+2µs) by Memoize::BEGIN@25 at line 25 of Memoize.pm
# once (28µs+2µs) by File::Temp::BEGIN@13 at line 13 of File/Temp.pm
# once (28µs+2µs) by Algorithm::CheckDigits::BEGIN@7 at line 7 of Algorithm/CheckDigits.pm
# once (28µs+1µs) by namespace::clean::BEGIN@11 at line 38 of Sub/Exporter/Progressive.pm
# once (28µs+2µs) by C4::Message::BEGIN@26 at line 26 of C4/Message.pm
# once (28µs+2µs) by Module::Implementation::BEGIN@9 at line 9 of Module/Implementation.pm
# once (28µs+2µs) by Sub::Install::BEGIN@6 at line 6 of Sub/Install.pm
# once (28µs+2µs) by CGI::Session::Driver::DBI::BEGIN@8 at line 8 of CGI/Session/Driver/DBI.pm
# once (28µs+1µs) by XML::Parser::Expat::BEGIN@8 at line 8 of XML/Parser/Expat.pm
# once (28µs+2µs) by C4::Members::BEGIN@42 at line 42 of C4/Members.pm
# once (28µs+2µs) by C4::VirtualShelves::BEGIN@23 at line 23 of C4/VirtualShelves.pm
# once (28µs+2µs) by autouse::import at line 28 of autouse.pm
# once (28µs+2µs) by Date::Parse::BEGIN@12 at line 12 of Date/Parse.pm
# once (27µs+2µs) by DBD::mysql::BEGIN@11 at line 11 of DBD/mysql.pm
# once (28µs+2µs) by DateTime::Format::Builder::BEGIN@10 at line 10 of DateTime/Format/Builder.pm
# once (28µs+1µs) by C4::Letters::BEGIN@30 at line 30 of C4/Letters.pm
# once (28µs+2µs) by XML::LibXML::Element::BEGIN@1537 at line 1537 of XML/LibXML.pm
# once (27µs+2µs) by C4::Koha::BEGIN@28 at line 28 of C4/Koha.pm
# once (27µs+2µs) by C4::Budgets::BEGIN@23 at line 23 of C4/Budgets.pm
# once (29µs+0s) by JSON::XS::BEGIN@121 at line 121 of JSON/XS.pm
# once (27µs+2µs) by Module::Metadata::BEGIN@29 at line 29 of Module/Metadata.pm
# once (27µs+1µs) by C4::Charset::BEGIN@23 at line 23 of C4/Charset.pm
# once (27µs+2µs) by C4::Circulation::BEGIN@51 at line 51 of C4/Circulation.pm
# once (27µs+2µs) by Data::Dumper::BEGIN@22 at line 22 of Data/Dumper.pm
# once (27µs+2µs) by MARC::Charset::BEGIN@11 at line 11 of MARC/Charset.pm
# once (27µs+1µs) by XML::LibXML::BEGIN@21 at line 21 of XML/LibXML.pm
# once (27µs+1µs) by C4::Letters::BEGIN@33 at line 33 of C4/Letters.pm
# once (27µs+1µs) by C4::Circulation::BEGIN@39 at line 39 of C4/Circulation.pm
# once (27µs+2µs) by C4::SQLHelper::BEGIN@23 at line 23 of C4/SQLHelper.pm
# once (27µs+2µs) by DateTime::Locale::Base::BEGIN@6 at line 6 of DateTime/Locale/Base.pm
# once (26µs+2µs) by MARC::Record::BEGIN@16 at line 16 of MARC/Record.pm
# once (26µs+2µs) by Text::CSV_XS::BEGIN@28 at line 28 of Text/CSV_XS.pm
# once (27µs+1µs) by C4::Circulation::BEGIN@38 at line 38 of C4/Circulation.pm
# once (26µs+1µs) by DateTime::Format::Builder::Parser::generic::BEGIN@8 at line 8 of DateTime/Format/Builder/Parser/generic.pm
# once (26µs+2µs) by Time::Zone::BEGIN@45 at line 45 of Time/Zone.pm
# once (26µs+1µs) by XML::Parser::ExpatNB::BEGIN@591 at line 591 of XML/Parser/Expat.pm
# once (26µs+2µs) by String::Random::BEGIN@20 at line 20 of String/Random.pm
# once (26µs+2µs) by Crypt::Eksblowfish::Bcrypt::BEGIN@43 at line 43 of Crypt/Eksblowfish/Bcrypt.pm
# once (26µs+2µs) by FindBin::BEGIN@84 at line 84 of FindBin.pm
# once (28µs+0s) by CGI::Session::ID::md5::BEGIN@6 at line 6 of CGI/Session/ID/md5.pm
# once (26µs+2µs) by Socket::BEGIN@10 at line 10 of Socket.pm
# once (25µs+2µs) by XML::SAX::BEGIN@17 at line 17 of XML/SAX.pm
# once (26µs+1µs) by MARC::File::USMARC::BEGIN@14 at line 14 of MARC/File/USMARC.pm
# once (26µs+1µs) by XML::SAX::Exception::BEGIN@13 at line 13 of XML/SAX/Exception.pm
# once (26µs+1µs) by DateTime::Format::Builder::Parser::generic::BEGIN@7 at line 7 of DateTime/Format/Builder/Parser/generic.pm
# once (25µs+2µs) by C4::Members::BEGIN@43 at line 43 of C4/Members.pm
# once (25µs+2µs) by DateTime::Duration::BEGIN@9 at line 9 of DateTime/Duration.pm
# once (26µs+1µs) by XML::LibXML::XPathContext::BEGIN@16 at line 16 of XML/LibXML/XPathContext.pm
# once (25µs+2µs) by DateTime::Set::BEGIN@4 at line 4 of DateTime/Set.pm
# once (25µs+2µs) by DateTime::Format::Builder::Parser::Strptime::BEGIN@11 at line 11 of DateTime/Format/Builder/Parser/Strptime.pm
# once (25µs+1µs) by C4::Context::BEGIN@108 at line 108 of C4/Context.pm
# once (25µs+1µs) by DateTime::Format::DateParse::BEGIN@15 at line 15 of DateTime/Format/DateParse.pm
# once (25µs+1µs) by XML::LibXML::Node::BEGIN@1268 at line 1268 of XML/LibXML.pm
# once (25µs+1µs) by Set::Infinite::Arithmetic::BEGIN@9 at line 9 of Set/Infinite/Arithmetic.pm
# once (26µs+0s) by C4::Context::BEGIN@100 at line 100 of C4/Context.pm
# once (25µs+2µs) by base::import at line 22 of Class/Accessor.pm
# once (25µs+2µs) by Sys::Hostname::Long::BEGIN@3 at line 3 of Sys/Hostname/Long.pm
# once (25µs+1µs) by Date::Parse::BEGIN@11 at line 11 of Date/Parse.pm
# once (25µs+800ns) by C4::Templates::BEGIN@7 at line 7 of C4/Templates.pm
# once (25µs+1µs) by C4::Message::BEGIN@27 at line 27 of C4/Message.pm
# once (24µs+2µs) by Class::Load::BEGIN@18 at line 18 of Class/Load.pm
# once (24µs+2µs) by Sys::Hostname::BEGIN@5 at line 5 of Sys/Hostname.pm
# once (26µs+0s) by Text::CSV::BEGIN@1 at line 1 of (eval 60)[Text/CSV.pm:151]
# once (25µs+1µs) by Mail::Address::BEGIN@11 at line 11 of Mail/Address.pm
# once (24µs+1µs) by FindBin::BEGIN@83 at line 83 of FindBin.pm
# once (24µs+2µs) by Unicode::Normalize::BEGIN@15 at line 15 of Unicode/Normalize.pm
# once (24µs+1µs) by DateTime::SpanSet::BEGIN@12 at line 12 of DateTime/SpanSet.pm
# once (24µs+1µs) by XML::LibXML::Error::BEGIN@20 at line 20 of XML/LibXML/Error.pm
# once (24µs+1µs) by Crypt::Eksblowfish::Bcrypt::BEGIN@41 at line 41 of Crypt/Eksblowfish/Bcrypt.pm
# once (24µs+1µs) by MARC::File::USMARC::BEGIN@19 at line 19 of MARC/File/USMARC.pm
# once (24µs+1µs) by C4::Overdues::BEGIN@24 at line 24 of C4/Overdues.pm
# once (23µs+2µs) by main::BEGIN@77 at line 77 of svc/members/upsert
# once (23µs+2µs) by File::Temp::Dir::BEGIN@1541 at line 1541 of File/Temp.pm
# once (24µs+1µs) by DateTime::Format::Builder::Parser::Dispatch::BEGIN@8 at line 8 of DateTime/Format/Builder/Parser/Dispatch.pm
# once (23µs+2µs) by Date::Parse::BEGIN@10 at line 10 of Date/Parse.pm
# once (23µs+2µs) by Template::Service::BEGIN@29 at line 29 of Template/Service.pm
# once (24µs+1µs) by C4::Items::BEGIN@28 at line 28 of C4/Items.pm
# once (24µs+1µs) by MIME::QuotedPrint::BEGIN@12 at line 12 of MIME/QuotedPrint.pm
# once (23µs+1µs) by MIME::Types::BEGIN@15 at line 15 of MIME/Types.pm
# once (24µs+1µs) by DateTime::Format::Strptime::BEGIN@11 at line 11 of DateTime/Format/Strptime.pm
# once (24µs+1µs) by C4::Circulation::BEGIN@48 at line 48 of C4/Circulation.pm
# once (23µs+1µs) by DateTime::BEGIN@19 at line 19 of DateTime.pm
# once (24µs+0s) by C4::Biblio::BEGIN@27 at line 27 of C4/Biblio.pm
# once (23µs+1µs) by Mail::Sendmail::BEGIN@2 at line 2 of (eval 59)[Mail/Sendmail.pm:64]
# once (23µs+1µs) by C4::Letters::BEGIN@23 at line 609 of MIME/Lite.pm
# once (23µs+1µs) by C4::Reserves::BEGIN@40 at line 40 of C4/Reserves.pm
# once (24µs+0s) by C4::Context::BEGIN@103 at line 103 of C4/Context.pm
# once (22µs+2µs) by Koha::Calendar::BEGIN@11 at line 11 of Koha/Calendar.pm
# once (22µs+1µs) by DateTime::Locale::Base::BEGIN@9 at line 9 of DateTime/Locale/Base.pm
# once (22µs+1000ns) by C4::Letters::BEGIN@36 at line 36 of C4/Letters.pm
# once (24µs+0s) by Template::Base::BEGIN@24 at line 24 of Template/Base.pm
# once (22µs+1µs) by CGI::BEGIN@4 at line 4 of CGI.pm
# once (22µs+1µs) by Encode::BEGIN@47 at line 47 of Encode.pm
# once (21µs+2µs) by YAML::BEGIN@11 at line 11 of YAML.pm
# once (22µs+1µs) by MARC::Charset::Code::BEGIN@6 at line 6 of MARC/Charset/Code.pm
# once (22µs+2µs) by XML::LibXML::Error::BEGIN@257 at line 257 of XML/LibXML/Error.pm
# once (22µs+1000ns) by Template::BEGIN@32 at line 32 of Template.pm
# once (21µs+1µs) by Try::Tiny::BEGIN@1 at line 1 of (eval 10)[Try/Tiny.pm:18]
# once (21µs+1µs) by File::Temp::BEGIN@15 at line 15 of File/Temp.pm
# once (21µs+1µs) by File::Temp::BEGIN@17 at line 17 of File/Temp.pm
# once (22µs+1µs) by MARC::Charset::Table::BEGIN@45 at line 45 of MARC/Charset/Table.pm
# once (21µs+1µs) by Module::Metadata::BEGIN@18 at line 18 of Module/Metadata.pm
# once (21µs+2µs) by C4::NewsChannels::BEGIN@24 at line 24 of C4/NewsChannels.pm
# once (21µs+1µs) by Mail::Sendmail::BEGIN@55 at line 55 of Mail/Sendmail.pm
# once (21µs+2µs) by C4::Koha::BEGIN@29 at line 29 of C4/Koha.pm
# once (20µs+1µs) by C4::Circulation::BEGIN@45 at line 45 of C4/Circulation.pm
# once (21µs+1µs) by C4::Biblio::BEGIN@34 at line 34 of C4/Biblio.pm
# once (21µs+800ns) by C4::Members::BEGIN@36 at line 36 of C4/Members.pm
# once (21µs+1µs) by C4::Output::BEGIN@34 at line 34 of C4/Output.pm
# once (21µs+1µs) by Set::Infinite::Arithmetic::BEGIN@10 at line 10 of Set/Infinite/Arithmetic.pm
# once (20µs+1µs) by DateTime::Format::Builder::Parser::BEGIN@7 at line 7 of DateTime/Format/Builder/Parser.pm
# once (21µs+0s) by CGI::BEGIN@5 at line 5 of CGI.pm
# once (20µs+700ns) by Template::BEGIN@33 at line 33 of Template.pm
# once (20µs+800ns) by Class::Factory::Util::BEGIN@6 at line 6 of Class/Factory/Util.pm
# once (19µs+1µs) by Mail::Sendmail::BEGIN@56 at line 56 of Mail/Sendmail.pm
# once (20µs+700ns) by DateTime::Format::Builder::Parser::BEGIN@11 at line 11 of DateTime/Format/Builder/Parser.pm
# once (20µs+1µs) by C4::Reserves::BEGIN@37 at line 37 of C4/Reserves.pm
# once (19µs+1µs) by C4::Log::BEGIN@28 at line 28 of C4/Log.pm
# once (19µs+1µs) by Mail::Sendmail::BEGIN@57 at line 57 of Mail/Sendmail.pm
# once (20µs+0s) by MARC::Charset::Table::BEGIN@42 at line 42 of MARC/Charset/Table.pm
# once (19µs+800ns) by Koha::AuthUtils::BEGIN@22 at line 22 of Koha/AuthUtils.pm
# once (20µs+0s) by Template::Provider::BEGIN@45 at line 45 of Template/Provider.pm
# once (19µs+1µs) by C4::Items::BEGIN@34 at line 34 of C4/Items.pm
# once (19µs+900ns) by C4::Biblio::BEGIN@31 at line 31 of C4/Biblio.pm
# once (19µs+800ns) by MARC::Charset::BEGIN@12 at line 12 of MARC/Charset.pm
# once (19µs+800ns) by MARC::File::XML::BEGIN@13 at line 13 of MARC/File/XML.pm
# once (19µs+800ns) by XML::LibXML::Element::BEGIN@1539 at line 1539 of XML/LibXML.pm
# once (18µs+800ns) by Set::Infinite::Basic::BEGIN@12 at line 12 of Set/Infinite/Basic.pm
# once (18µs+800ns) by C4::SQLHelper::BEGIN@25 at line 25 of C4/SQLHelper.pm
# once (18µs+700ns) by C4::Circulation::BEGIN@47 at line 47 of C4/Circulation.pm
# once (18µs+900ns) by XML::SAX::ParserFactory::BEGIN@10 at line 10 of XML/SAX/ParserFactory.pm
# once (18µs+700ns) by C4::Accounts::BEGIN@29 at line 29 of C4/Accounts.pm
# once (18µs+0s) by C4::Debug::BEGIN@23 at line 23 of C4/Debug.pm
# once (18µs+0s) by Template::Document::BEGIN@27 at line 27 of Template/Document.pm
# once (17µs+800ns) by C4::Reserves::BEGIN@38 at line 38 of C4/Reserves.pm
# once (17µs+900ns) by MARC::Charset::Code::BEGIN@7 at line 7 of MARC/Charset/Code.pm
# once (17µs+700ns) by C4::Reserves::BEGIN@42 at line 42 of C4/Reserves.pm
# once (17µs+700ns) by C4::Letters::BEGIN@34 at line 34 of C4/Letters.pm
# once (17µs+0s) by Template::Service::BEGIN@28 at line 28 of Template/Service.pm
# once (17µs+0s) by DBD::mysql::BEGIN@9 at line 9 of DBD/mysql.pm
# once (17µs+0s) by DateTime::Set::BEGIN@9 at line 9 of DateTime/Set.pm
# once (16µs+700ns) by Sys::Hostname::Long::BEGIN@6 at line 6 of Sys/Hostname/Long.pm
# once (16µs+0s) by YAML::BEGIN@6 at line 6 of YAML.pm
# once (15µs+700ns) by Date::Manip::Date::BEGIN@23 at line 23 of Date/Manip/Date.pm
# once (15µs+900ns) by C4::Circulation::BEGIN@32 at line 32 of C4/Circulation.pm
# once (16µs+0s) by CGI::Session::Driver::DBI::BEGIN@7 at line 7 of CGI/Session/Driver/DBI.pm
# once (16µs+0s) by MARC::File::XML::BEGIN@7 at line 7 of MARC/File/XML.pm
# once (15µs+0s) by Cwd::BEGIN@4 at line 4 of Cwd.pm
# once (15µs+0s) by Template::BEGIN@28 at line 28 of Template.pm
# once (15µs+0s) by C4::Auth_with_cas::BEGIN@27 at line 27 of C4/Auth_with_cas.pm
# once (15µs+0s) by C4::Charset::BEGIN@24 at line 24 of C4/Charset.pm
# once (15µs+0s) by Class::Load::XS::BEGIN@11 at line 11 of Class/Load/XS.pm
# once (15µs+0s) by DateTime::Format::Strptime::BEGIN@13 at line 13 of DateTime/Format/Strptime.pm
# once (15µs+0s) by Readonly::BEGIN@155 at line 155 of Readonly.pm
# once (14µs+0s) by File::Temp::BEGIN@16 at line 16 of File/Temp.pm
# once (14µs+0s) by DateTime::Set::BEGIN@10 at line 10 of DateTime/Set.pm
# once (14µs+0s) by DateTime::Format::Builder::Parser::Strptime::BEGIN@10 at line 10 of DateTime/Format/Builder/Parser/Strptime.pm
# once (14µs+0s) by YAML::Node::BEGIN@7 at line 7 of YAML/Node.pm
# once (14µs+0s) by YAML::Syck::BEGIN@14 at line 14 of YAML/Syck.pm
# once (13µs+0s) by Date::Manip::BEGIN@11 at line 11 of Date/Manip.pm
# once (13µs+0s) by Module::Load::Conditional::BEGIN@23 at line 23 of Module/Load/Conditional.pm
# once (13µs+0s) by Set::Infinite::_recurrence::BEGIN@15 at line 15 of Set/Infinite/_recurrence.pm
# once (13µs+0s) by MARC::Record::BEGIN@27 at line 27 of MARC/Record.pm
# once (13µs+0s) by XML::LibXML::BEGIN@29 at line 29 of XML/LibXML.pm
# once (12µs+0s) by Date::Parse::BEGIN@13 at line 13 of Date/Parse.pm
# once (11µs+0s) by C4::Dates::BEGIN@27 at line 27 of C4/Dates.pm
# once (11µs+0s) by Memoize::BEGIN@26 at line 26 of Memoize.pm
# once (10µs+0s) by C4::Circulation::BEGIN@31 at line 31 of C4/Circulation.pm
# once (10µs+0s) by URI::Escape::BEGIN@140 at line 140 of URI/Escape.pm
# once (10µs+0s) by C4::Items::BEGIN@29 at line 29 of C4/Items.pm
# once (8µs+0s) by Try::Tiny::BEGIN@12 at line 12 of Try/Tiny.pm
# once (7µs+0s) by Params::Validate::BEGIN@8 at line 8 of Params/Validate.pm
# once (7µs+0s) by Sub::Name::BEGIN@58 at line 58 of Sub/Name.pm
# once (6µs+0s) by File::Temp::BEGIN@43 at line 43 of File/Temp.pm
# once (6µs+0s) by Encode::BEGIN@12 at line 12 of Encode.pm
# once (5µs+0s) by Encode::Alias::BEGIN@8 at line 8 of Encode/Alias.pm | ||||
29 | 354 | 135µs | my $pkg = shift; | ||
30 | 354 | 232µs | my $callpkg = caller($ExportLevel); | ||
31 | |||||
32 | 354 | 127µs | if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { | ||
33 | 6 | 18µs | *{$callpkg."::import"} = \&import; | ||
34 | 6 | 20µs | return; | ||
35 | } | ||||
36 | |||||
37 | # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( | ||||
38 | 348 | 593µs | my $exports = \@{"$pkg\::EXPORT"}; | ||
39 | # But, avoid creating things if they don't exist, which saves a couple of | ||||
40 | # hundred bytes per package processed. | ||||
41 | 348 | 358µs | my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"}; | ||
42 | 348 | 146µs | return export $pkg, $callpkg, @_ | ||
43 | if $Verbose or $Debug or $fail && @$fail > 1; | ||||
44 | 348 | 277µs | my $export_cache = ($Cache{$pkg} ||= {}); | ||
45 | 348 | 522µs | my $args = @_ or @_ = @$exports; | ||
46 | |||||
47 | 348 | 94µs | if ($args and not %$export_cache) { | ||
48 | s/^&//, $export_cache->{$_} = 1 | ||||
49 | 52 | 2.20ms | 1509 | 281µs | foreach (@$exports, @{"$pkg\::EXPORT_OK"}); # spent 281µs making 1509 calls to Exporter::CORE:subst, avg 186ns/call |
50 | } | ||||
51 | 348 | 40µs | my $heavy; | ||
52 | # Try very hard not to use {} and hence have to enter scope on the foreach | ||||
53 | # We bomb out of the loop with last as soon as heavy is set. | ||||
54 | 348 | 150µs | if ($args or $fail) { | ||
55 | ($heavy = (/\W/ or $args and not exists $export_cache->{$_} | ||||
56 | or $fail and @$fail and $_ eq $fail->[0])) and last | ||||
57 | 225 | 1.80ms | 693 | 365µs | foreach (@_); # spent 365µs making 693 calls to Exporter::CORE:match, avg 527ns/call |
58 | } else { | ||||
59 | ($heavy = /\W/) and last | ||||
60 | 123 | 5.17ms | 1024 | 314µs | foreach (@_); # spent 314µs making 1024 calls to Exporter::CORE:match, avg 307ns/call |
61 | } | ||||
62 | 348 | 366µs | 53 | 814µs | return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy; # spent 814µs making 53 calls to Exporter::export, avg 15µs/call |
63 | local $SIG{__WARN__} = | ||||
64 | 295 | 1.21ms | sub {require Carp; &Carp::carp} if not $SIG{__WARN__}; | ||
65 | # shortcut for the common case of no type character | ||||
66 | 295 | 4.76ms | *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_; | ||
67 | } | ||||
68 | |||||
69 | # Default methods | ||||
70 | |||||
71 | sub export_fail { | ||||
72 | my $self = shift; | ||||
73 | @_; | ||||
74 | } | ||||
75 | |||||
76 | # Unfortunately, caller(1)[3] "does not work" if the caller is aliased as | ||||
77 | # *name = \&foo. Thus the need to create a lot of identical subroutines | ||||
78 | # Otherwise we could have aliased them to export(). | ||||
79 | |||||
80 | # spent 116µs (27+89) within Exporter::export_to_level which was called 6 times, avg 19µs/call:
# 4 times (17µs+61µs) by XML::LibXML::import at line 209 of XML/LibXML.pm, avg 19µs/call
# 2 times (10µs+28µs) by JSON::import at line 111 of JSON.pm, avg 19µs/call | ||||
81 | 6 | 36µs | 12 | 829µs | goto &{as_heavy()}; # spent 740µs making 6 calls to Exporter::Heavy::heavy_export_to_level, avg 123µs/call
# spent 89µs making 6 calls to Exporter::as_heavy, avg 15µs/call |
82 | } | ||||
83 | |||||
84 | # spent 37µs (7+30) within Exporter::export_tags which was called:
# once (7µs+30µs) by parent::import at line 72 of File/Temp.pm | ||||
85 | 1 | 8µs | 2 | 53µs | goto &{as_heavy()}; # spent 30µs making 1 call to Exporter::as_heavy
# spent 23µs making 1 call to Exporter::Heavy::heavy_export_tags |
86 | } | ||||
87 | |||||
88 | # spent 3.61ms (6µs+3.60) within Exporter::export_ok_tags which was called:
# once (6µs+3.60ms) by DBI::BEGIN@173 at line 276 of DBI.pm | ||||
89 | 1 | 8µs | 2 | 3.64ms | goto &{as_heavy()}; # spent 3.60ms making 1 call to Exporter::as_heavy
# spent 38µs making 1 call to Exporter::Heavy::heavy_export_ok_tags |
90 | } | ||||
91 | |||||
92 | sub require_version { | ||||
93 | goto &{as_heavy()}; | ||||
94 | } | ||||
95 | |||||
96 | 1 | 6µs | 1; | ||
97 | __END__ | ||||
sub Exporter::CORE:match; # opcode | |||||
sub Exporter::CORE:subst; # opcode |