Filename | /usr/local/lib/perl5/5.24/Exporter.pm |
Statements | Executed 10001 statements in 140ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
282 | 276 | 122 | 124ms | 170ms | import | Exporter::
75 | 2 | 1 | 6.12ms | 7.14ms | as_heavy | Exporter::
2371 | 2 | 1 | 5.55ms | 5.55ms | CORE:match (opcode) | Exporter::
1607 | 2 | 1 | 3.57ms | 3.57ms | CORE:subst (opcode) | Exporter::
58 | 3 | 3 | 1.09ms | 7.40ms | export | Exporter::
17 | 5 | 5 | 302µs | 1.13ms | export_to_level | Exporter::
0 | 0 | 0 | 0s | 0s | __ANON__[:64] | Exporter::
0 | 0 | 0 | 0s | 0s | export_fail | Exporter::
0 | 0 | 0 | 0s | 0s | export_ok_tags | Exporter::
0 | 0 | 0 | 0s | 0s | export_tags | 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 | 21µs | require 5.006; | ||
4 | |||||
5 | # Be lean. | ||||
6 | #use strict; | ||||
7 | #no strict 'refs'; | ||||
8 | |||||
9 | 1 | 2µs | our $Debug = 0; | ||
10 | 1 | 2µs | our $ExportLevel = 0; | ||
11 | 1 | 2µs | our $Verbose ||= 0; | ||
12 | 1 | 2µs | our $VERSION = '5.72'; | ||
13 | our (%Cache); | ||||
14 | |||||
15 | sub as_heavy { | ||||
16 | 75 | 428µs | 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 | 75 | 855µs | my $c = (caller(1))[3]; | ||
20 | 75 | 1.42ms | 75 | 800µs | $c =~ s/.*:://; # spent 800µs making 75 calls to Exporter::CORE:subst, avg 11µs/call |
21 | 150 | 1.27ms | \&{"Exporter::Heavy::heavy_$c"}; | ||
22 | } | ||||
23 | |||||
24 | # spent 7.40ms (1.09+6.31) within Exporter::export which was called 58 times, avg 128µs/call:
# 31 times (596µs+5.07ms) by Exporter::import at line 62, avg 183µs/call
# 17 times (294µs+752µs) by Exporter::Heavy::heavy_export_to_level at line 219 of Exporter/Heavy.pm, avg 62µs/call
# 10 times (201µs+481µs) by IO::Socket::import at line 37 of IO/Socket.pm, avg 68µs/call | ||||
25 | 116 | 1.43ms | 116 | 99.5ms | goto &{as_heavy()}; # spent 93.2ms making 58 calls to Exporter::Heavy::heavy_export, avg 1.61ms/call
# spent 6.31ms making 58 calls to Exporter::as_heavy, avg 109µs/call |
26 | } | ||||
27 | |||||
28 | # spent 170ms (124+46.0) within Exporter::import which was called 282 times, avg 604µs/call:
# 6 times (8.53ms+2.82ms) by POSIX::import at line 30 of POSIX.pm, avg 1.89ms/call
# 2 times (189µs+4.27ms) by Getopt::Long::import at line 118 of Getopt/Long.pm, avg 2.23ms/call
# once (12.1ms+16µs) by Net::DNS::RR::BEGIN@37 at line 37 of Net/DNS/RR.pm
# once (100µs+11.9ms) by Sys::Syslog::BEGIN@9 at line 9 of Sys/Syslog.pm
# once (6.40ms+316µs) by Net::SMTP::BEGIN@22 at line 22 of Net/SMTP.pm
# once (5.66ms+323µs) by NetAddr::IP::UtilPolluted::BEGIN@198 at line 198 of NetAddr/IP/Util.pm
# once (5.66ms+320µs) by IO::Socket::BEGIN@13 at line 13 of IO/Socket.pm
# once (5.63ms+316µs) by Mail::SpamAssassin::DnsResolver::BEGIN@50 at line 50 of Mail/SpamAssassin/DnsResolver.pm
# once (5.16ms+321µs) by IO::Socket::INET::BEGIN@12 at line 12 of IO/Socket/INET.pm
# once (4.84ms+322µs) by Net::DNS::Resolver::Base::BEGIN@1 at line 1 of (eval 16)[Net/DNS/Resolver/Base.pm:29]
# once (4.29ms+320µs) by Net::SSLeay::BEGIN@19 at line 19 of Net/SSLeay.pm
# once (99µs+3.04ms) by Razor2::Client::Core::BEGIN@16 at line 16 of Razor2/Client/Core.pm
# once (2.74ms+355µs) by POSIX::BEGIN@11 at line 17 of POSIX.pm
# once (63µs+2.97ms) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@31 at line 31 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm
# once (2.19ms+640µs) by Net::Patricia::BEGIN@34 at line 34 of Net/Patricia.pm
# once (2.36ms+132µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@96 at line 96 of Mail/SpamAssassin/Plugin/Hashcash.pm
# once (2.31ms+136µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@25 at line 25 of Mail/SpamAssassin/BayesStore/DBM.pm
# once (2.29ms+123µs) by Mail::SpamAssassin::Util::BEGIN@77 at line 77 of Mail/SpamAssassin/Util.pm
# once (2.27ms+128µs) by Mail::SpamAssassin::Locker::BEGIN@24 at line 24 of Mail/SpamAssassin/Locker.pm
# once (2.25ms+125µs) by Digest::SHA::BEGIN@8 at line 8 of Digest/SHA.pm
# once (2.13ms+133µs) by Mail::SpamAssassin::DBBasedAddrList::BEGIN@24 at line 24 of Mail/SpamAssassin/DBBasedAddrList.pm
# once (1.33ms+179µs) by main::BEGIN@23 at line 23 of /usr/local/bin/sa-learn
# once (1.13ms+63µs) by Razor2::Syslog::BEGIN@5 at line 5 of Razor2/Syslog.pm
# once (230µs+936µs) by Mail::SpamAssassin::Conf::BEGIN@87 at line 87 of Mail/SpamAssassin/Conf.pm
# once (1.09ms+60µs) by Razor2::Client::Agent::BEGIN@16 at line 147 of IO/File.pm
# once (85µs+909µs) by Mail::SpamAssassin::Plugin::HeaderEval::BEGIN@29 at line 29 of Mail/SpamAssassin/Plugin/HeaderEval.pm
# once (894µs+57µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@108 at line 250 of DB_File.pm
# once (793µs+122µs) by NetAddr::IP::Lite::BEGIN@9 at line 86 of NetAddr/IP/InetBase.pm
# once (850µs+64µs) by Razor2::Client::Agent::BEGIN@16 at line 16 of Razor2/Client/Agent.pm
# once (844µs+62µs) by Razor2::Logger::BEGIN@9 at line 9 of Razor2/Logger.pm
# once (110µs+678µs) by Mail::SpamAssassin::Plugin::Check::BEGIN@27 at line 27 of Mail/SpamAssassin/Plugin/Check.pm
# once (727µs+53µs) by IO::Socket::IP::BEGIN@19 at line 30 of IO/Socket/IP.pm
# once (86µs+691µs) by Mail::SpamAssassin::Message::Metadata::BEGIN@57 at line 57 of Mail/SpamAssassin/Message/Metadata.pm
# once (76µs+698µs) by Mail::SpamAssassin::Plugin::MIMEEval::BEGIN@27 at line 27 of Mail/SpamAssassin/Plugin/MIMEEval.pm
# once (96µs+672µs) by Mail::SpamAssassin::Message::BEGIN@57 at line 57 of Mail/SpamAssassin/Message.pm
# once (97µs+672µs) by Mail::SpamAssassin::Plugin::BodyEval::BEGIN@22 at line 22 of Mail/SpamAssassin/Plugin/BodyEval.pm
# once (88µs+669µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@59 at line 59 of Mail/SpamAssassin/PerMsgStatus.pm
# once (86µs+662µs) by Mail::SpamAssassin::HTML::BEGIN@32 at line 32 of Mail/SpamAssassin/HTML.pm
# once (78µs+657µs) by Mail::SpamAssassin::Message::Node::BEGIN@44 at line 44 of Mail/SpamAssassin/Message/Node.pm
# once (96µs+636µs) by Net::DNS::Header::BEGIN@33 at line 33 of Net/DNS/Header.pm
# once (123µs+608µs) by Net::DNS::RR::OPT::BEGIN@23 at line 23 of Net/DNS/RR/OPT.pm
# once (87µs+640µs) by Mail::SpamAssassin::ArchiveIterator::BEGIN@29 at line 29 of Mail/SpamAssassin/ArchiveIterator.pm
# once (108µs+590µs) by Net::DNS::RR::BEGIN@41 at line 41 of Net/DNS/RR.pm
# once (81µs+599µs) by Mail::SpamAssassin::Conf::Parser::BEGIN@138 at line 138 of Mail/SpamAssassin/Conf/Parser.pm
# once (91µs+582µs) by Net::DNS::Question::BEGIN@32 at line 32 of Net/DNS/Question.pm
# once (547µs+75µs) by Mail::SpamAssassin::Message::BEGIN@49 at line 50 of Mail/SpamAssassin/Message.pm
# once (81µs+529µs) by Mail::SpamAssassin::Plugin::DNSEval::BEGIN@29 at line 29 of Mail/SpamAssassin/Plugin/DNSEval.pm
# once (90µs+514µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@31 at line 31 of Mail/SpamAssassin/Dns.pm
# once (524µs+67µs) by Pod::Text::BEGIN@33 at line 33 of Pod/Text.pm
# once (92µs+478µs) by Mail::SpamAssassin::DnsResolver::BEGIN@47 at line 47 of Mail/SpamAssassin/DnsResolver.pm
# once (90µs+469µs) by Mail::SpamAssassin::Message::Metadata::BEGIN@51.2 at line 51 of Mail/SpamAssassin/Message/Metadata/Received.pm
# once (79µs+466µs) by Mail::SpamAssassin::Plugin::URIDNSBL::BEGIN@296 at line 296 of Mail/SpamAssassin/Plugin/URIDNSBL.pm
# once (494µs+38µs) by Razor2::Client::Core::BEGIN@26 at line 29 of Razor2/Client/Core.pm
# once (84µs+432µs) by Mail::SpamAssassin::Plugin::RelayEval::BEGIN@22 at line 22 of Mail/SpamAssassin/Plugin/RelayEval.pm
# once (408µs+42µs) by Razor2::Client::Agent::BEGIN@18 at line 18 of Razor2/Client/Agent.pm
# once (369µs+29µs) by IO::Socket::INET6::BEGIN@28 at line 33 of IO/Socket/INET6.pm
# once (360µs+12µs) by IO::Socket::INET6::BEGIN@37 at line 40 of IO/Socket/INET6.pm
# once (324µs+13µs) by IO::Socket::IP::BEGIN@34 at line 34 of IO/Socket/IP.pm
# once (268µs+65µs) by Mail::SpamAssassin::Conf::Parser::BEGIN@140 at line 140 of Mail/SpamAssassin/Conf/Parser.pm
# once (93µs+234µs) by main::BEGIN@25 at line 25 of /usr/local/bin/sa-learn
# once (265µs+39µs) by IO::Socket::SSL::BEGIN@27 at line 30 of IO/Socket/SSL.pm
# once (79µs+210µs) by Net::SMTP::BEGIN@21 at line 21 of Net/SMTP.pm
# once (270µs+17µs) by Net::SMTP::BEGIN@20 at line 20 of Net/SMTP.pm
# once (256µs+15µs) by IO::Socket::SSL::BEGIN@22 at line 22 of IO/Socket/SSL.pm
# once (259µs+9µs) by Sys::Syslog::BEGIN@7 at line 7 of Sys/Syslog.pm
# once (246µs+8µs) by Mail::SpamAssassin::BEGIN@83 at line 83 of Mail/SpamAssassin.pm
# once (219µs+34µs) by Pod::Text::BEGIN@32 at line 32 of Pod/Text.pm
# once (231µs+12µs) by Net::SMTP::BEGIN@18 at line 18 of Net/SMTP.pm
# once (233µs+9µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@27 at line 27 of Mail/SpamAssassin/BayesStore/DBM.pm
# once (229µs+8µs) by Mail::SpamAssassin::AICache::BEGIN@40 at line 40 of Mail/SpamAssassin/AICache.pm
# once (224µs+12µs) by Net::DNS::Parameters::BEGIN@20 at line 20 of Net/DNS/Parameters.pm
# once (226µs+8µs) by Net::Patricia::BEGIN@32 at line 32 of Net/Patricia.pm
# once (224µs+7µs) by SelectSaver::BEGIN@38 at line 38 of SelectSaver.pm
# once (224µs+8µs) by IO::Handle::BEGIN@266 at line 266 of IO/Handle.pm
# once (219µs+11µs) by IO::Socket::IP::BEGIN@17 at line 17 of IO/Socket/IP.pm
# once (221µs+8µs) by Mail::SpamAssassin::DBBasedAddrList::BEGIN@28 at line 28 of Mail/SpamAssassin/DBBasedAddrList.pm
# once (221µs+7µs) by Mail::SpamAssassin::Plugin::VBounce::BEGIN@31 at line 31 of Mail/SpamAssassin/Plugin/VBounce.pm
# once (207µs+20µs) by IO::File::BEGIN@131 at line 131 of IO/File.pm
# once (218µs+8µs) by IO::File::BEGIN@130 at line 130 of IO/File.pm
# once (211µs+14µs) by IO::Socket::SSL::BEGIN@308 at line 317 of IO/Socket/SSL.pm
# once (216µs+8µs) by Mail::SpamAssassin::BEGIN@87 at line 87 of Mail/SpamAssassin.pm
# once (216µs+7µs) by DB_File::HASHINFO::BEGIN@16 at line 16 of DB_File.pm
# once (195µs+28µs) by File::Path::BEGIN@6 at line 6 of File/Path.pm
# once (215µs+8µs) by Mail::SpamAssassin::Plugin::DKIM::BEGIN@123 at line 123 of Mail/SpamAssassin/Plugin/DKIM.pm
# once (210µs+12µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@64 at line 64 of Mail/SpamAssassin/PerMsgStatus.pm
# once (210µs+11µs) by Sys::Syslog::BEGIN@5 at line 5 of Sys/Syslog.pm
# once (204µs+17µs) by Mail::SpamAssassin::Plugin::URIDetail::BEGIN@70 at line 70 of Mail/SpamAssassin/Plugin/URIDetail.pm
# once (208µs+13µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@1450 at line 1450 of Mail/SpamAssassin/BayesStore/DBM.pm
# once (200µs+19µs) by Razor2::String::BEGIN@4 at line 4 of Razor2/String.pm
# once (188µs+30µs) by NetAddr::IP::Lite::BEGIN@18 at line 239 of NetAddr/IP/Util.pm
# once (210µs+9µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@39 at line 39 of Mail/SpamAssassin/BayesStore/DBM.pm
# once (211µs+6µs) by Mail::SpamAssassin::Conf::Parser::BEGIN@139 at line 139 of Mail/SpamAssassin/Conf/Parser.pm
# once (206µs+11µs) by Net::Patricia::AF_INET::BEGIN@148 at line 148 of Net/Patricia.pm
# once (202µs+14µs) by IO::Socket::INET6::BEGIN@42 at line 42 of IO/Socket/INET6.pm
# once (201µs+14µs) by Mail::SpamAssassin::Util::BEGIN@73 at line 73 of Mail/SpamAssassin/Util.pm
# once (206µs+9µs) by Tie::Hash::BEGIN@190 at line 190 of Tie/Hash.pm
# once (200µs+15µs) by IO::Socket::BEGIN@14 at line 14 of IO/Socket.pm
# once (205µs+9µs) by Net::Patricia::AF_INET6::BEGIN@236 at line 236 of Net/Patricia.pm
# once (207µs+7µs) by Mail::SpamAssassin::ArchiveIterator::BEGIN@30 at line 30 of Mail/SpamAssassin/ArchiveIterator.pm
# once (207µs+6µs) by Mail::SpamAssassin::Plugin::HeaderEval::BEGIN@28 at line 28 of Mail/SpamAssassin/Plugin/HeaderEval.pm
# once (206µs+6µs) by Mail::SpamAssassin::Plugin::TxRep::BEGIN@211 at line 211 of Mail/SpamAssassin/Plugin/TxRep.pm
# once (203µs+8µs) by Socket::BEGIN@697 at line 697 of Socket.pm
# once (203µs+8µs) by Net::DNS::RR::OPT::BEGIN@22 at line 22 of Net/DNS/RR/OPT.pm
# once (203µs+7µs) by IO::Seekable::BEGIN@98 at line 98 of IO/Seekable.pm
# once (202µs+8µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@98 at line 98 of Mail/SpamAssassin/Plugin/Hashcash.pm
# once (203µs+7µs) by Time::Local::BEGIN@4 at line 4 of Time/Local.pm
# once (193µs+17µs) by Mail::SpamAssassin::Util::BEGIN@50 at line 50 of Mail/SpamAssassin/Util.pm
# once (200µs+9µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@28 at line 28 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm
# once (197µs+11µs) by Data::Dumper::BEGIN@22 at line 22 of Data/Dumper.pm
# once (200µs+8µs) by Razor2::Client::Engine::BEGIN@9 at line 9 of Razor2/Client/Engine.pm
# once (201µs+7µs) by Mail::SpamAssassin::Plugin::AskDNS::BEGIN@193 at line 193 of Mail/SpamAssassin/Plugin/AskDNS.pm
# once (199µs+8µs) by Razor2::String::BEGIN@5 at line 5 of Razor2/String.pm
# once (200µs+7µs) by IO::Socket::SSL::SSL_Context::BEGIN@2159 at line 2159 of IO/Socket/SSL.pm
# once (196µs+10µs) by IO::Handle::BEGIN@267 at line 267 of IO/Handle.pm
# once (195µs+9µs) by Mail::SpamAssassin::Plugin::URIDNSBL::BEGIN@298 at line 298 of Mail/SpamAssassin/Plugin/URIDNSBL.pm
# once (196µs+8µs) by Mail::SpamAssassin::Plugin::URIEval::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/URIEval.pm
# once (180µs+24µs) by URI::_idna::BEGIN@9 at line 9 of URI/_idna.pm
# once (187µs+17µs) by Net::DNS::Header::BEGIN@31 at line 31 of Net/DNS/Header.pm
# once (189µs+13µs) by IO::Socket::SSL::PublicSuffix::BEGIN@5 at line 5 of IO/Socket/SSL/PublicSuffix.pm
# once (194µs+8µs) by Mail::SpamAssassin::Plugin::AutoLearnThreshold::BEGIN@55 at line 55 of Mail/SpamAssassin/Plugin/AutoLearnThreshold.pm
# once (193µs+9µs) by Pod::Usage::BEGIN@19 at line 19 of Pod/Usage.pm
# once (190µs+12µs) by Net::Cmd::BEGIN@18 at line 18 of Net/Cmd.pm
# once (195µs+6µs) by IO::Seekable::BEGIN@104 at line 104 of IO/Seekable.pm
# once (189µs+12µs) by Net::DNS::DomainName::BEGIN@46 at line 46 of Net/DNS/DomainName.pm
# once (190µs+10µs) by Mail::SpamAssassin::Message::Metadata::BEGIN@60 at line 60 of Mail/SpamAssassin/Message/Metadata.pm
# once (188µs+11µs) by Mail::SpamAssassin::Plugin::SpamCop::BEGIN@45 at line 45 of Mail/SpamAssassin/Plugin/SpamCop.pm
# once (191µs+7µs) by Mail::SpamAssassin::Timeout::BEGIN@62 at line 62 of Mail/SpamAssassin/Timeout.pm
# once (188µs+10µs) by Mail::SpamAssassin::Conf::BEGIN@89 at line 89 of Mail/SpamAssassin/Conf.pm
# once (184µs+14µs) by Net::DNS::Update::BEGIN@35 at line 35 of Net/DNS/Update.pm
# once (184µs+14µs) by Net::DNS::Packet::BEGIN@32 at line 32 of Net/DNS/Packet.pm
# once (190µs+7µs) by Mail::SpamAssassin::Plugin::SPF::BEGIN@37 at line 37 of Mail/SpamAssassin/Plugin/SPF.pm
# once (189µs+8µs) by NetAddr::IP::BEGIN@7 at line 7 of NetAddr/IP.pm
# once (179µs+17µs) by IO::Socket::UNIX::BEGIN@12 at line 12 of IO/Socket/UNIX.pm
# once (190µs+7µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@62 at line 62 of Mail/SpamAssassin/PerMsgStatus.pm
# once (183µs+13µs) by Mail::SpamAssassin::PluginHandler::BEGIN@29 at line 29 of Mail/SpamAssassin/PluginHandler.pm
# once (183µs+13µs) by Mail::SpamAssassin::Conf::SQL::BEGIN@44 at line 44 of Mail/SpamAssassin/Conf/SQL.pm
# once (183µs+13µs) by Mail::SpamAssassin::BEGIN@69 at line 69 of Mail/SpamAssassin.pm
# once (176µs+19µs) by Net::Cmd::BEGIN@20 at line 20 of Net/Cmd.pm
# once (188µs+7µs) by Net::Patricia::AF_INET6::BEGIN@234 at line 234 of Net/Patricia.pm
# once (188µs+6µs) by IO::Socket::SSL::BEGIN@23 at line 23 of IO/Socket/SSL.pm
# once (179µs+15µs) by Mail::SpamAssassin::Plugin::DNSEval::BEGIN@28 at line 28 of Mail/SpamAssassin/Plugin/DNSEval.pm
# once (180µs+13µs) by Mail::SpamAssassin::AICache::BEGIN@39 at line 39 of Mail/SpamAssassin/AICache.pm
# once (184µs+9µs) by IO::BEGIN@6 at line 6 of IO.pm
# once (185µs+8µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@92 at line 92 of Mail/SpamAssassin/Plugin/Hashcash.pm
# once (184µs+8µs) by Mail::SpamAssassin::Plugin::Razor2::BEGIN@44 at line 44 of Mail/SpamAssassin/Plugin/Razor2.pm
# once (185µs+6µs) by NetAddr::IP::Lite::BEGIN@5 at line 5 of NetAddr/IP/Lite.pm
# once (184µs+7µs) by Mail::SpamAssassin::Plugin::BodyEval::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/BodyEval.pm
# once (184µs+7µs) by Net::DNS::Resolver::Base::BEGIN@52 at line 52 of Net/DNS/Resolver/Base.pm
# once (183µs+8µs) by Mail::SpamAssassin::Plugin::WLBLEval::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/WLBLEval.pm
# once (182µs+8µs) by Net::SSLeay::BEGIN@17 at line 17 of Net/SSLeay.pm
# once (184µs+5µs) by Mail::SpamAssassin::NetSet::BEGIN@35 at line 39 of Mail/SpamAssassin/NetSet.pm
# once (176µs+13µs) by Mail::SpamAssassin::Message::Node::BEGIN@46 at line 46 of Mail/SpamAssassin/Message/Node.pm
# once (163µs+25µs) by Mail::SpamAssassin::BayesStore::BEGIN@35 at line 35 of Mail/SpamAssassin/BayesStore.pm
# once (177µs+11µs) by Net::DNS::Domain::BEGIN@41 at line 41 of Net/DNS/Domain.pm
# once (180µs+7µs) by Sys::Hostname::BEGIN@5 at line 5 of Sys/Hostname.pm
# once (170µs+16µs) by Mail::SpamAssassin::Util::BEGIN@74 at line 74 of Mail/SpamAssassin/Util.pm
# once (180µs+6µs) by Mail::SpamAssassin::Plugin::MIMEEval::BEGIN@29 at line 29 of Mail/SpamAssassin/Plugin/MIMEEval.pm
# once (179µs+7µs) by Mail::SpamAssassin::PerMsgLearner::BEGIN@57 at line 57 of Mail/SpamAssassin/PerMsgLearner.pm
# once (166µs+20µs) by Mail::SpamAssassin::AsyncLoop::BEGIN@44 at line 44 of Mail/SpamAssassin/AsyncLoop.pm
# once (167µs+18µs) by Net::DNS::Question::BEGIN@30 at line 30 of Net/DNS/Question.pm
# once (177µs+7µs) by Mail::SpamAssassin::Util::BEGIN@78 at line 78 of Mail/SpamAssassin/Util.pm
# once (167µs+14µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@37 at line 37 of Mail/SpamAssassin/BayesStore/DBM.pm
# once (175µs+6µs) by Encode::BEGIN@47 at line 47 of Encode.pm
# once (172µs+8µs) by main::BEGIN@70 at line 70 of /usr/local/bin/sa-learn
# once (172µs+8µs) by Mail::SpamAssassin::Plugin::HTTPSMismatch::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/HTTPSMismatch.pm
# once (173µs+6µs) by Socket6::BEGIN@213 at line 213 of Socket6.pm
# once (164µs+15µs) by Mail::SpamAssassin::Conf::LDAP::BEGIN@44 at line 44 of Mail/SpamAssassin/Conf/LDAP.pm
# once (168µs+8µs) by SelectSaver::BEGIN@39 at line 39 of SelectSaver.pm
# once (163µs+12µs) by Mail::SpamAssassin::NetSet::BEGIN@29 at line 29 of Mail/SpamAssassin/NetSet.pm
# once (167µs+6µs) by Mail::SpamAssassin::BEGIN@84 at line 84 of Mail/SpamAssassin.pm
# once (166µs+7µs) by Razor2::Client::Config::BEGIN@15 at line 15 of Razor2/Client/Config.pm
# once (165µs+7µs) by Mail::SpamAssassin::Plugin::Check::BEGIN@24 at line 24 of Mail/SpamAssassin/Plugin/Check.pm
# once (165µs+6µs) by Mail::SpamAssassin::Plugin::Bayes::BEGIN@59 at line 59 of Mail/SpamAssassin/Plugin/Bayes.pm
# once (165µs+5µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@30 at line 30 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm
# once (157µs+13µs) by Mail::SpamAssassin::Bayes::BEGIN@42 at line 42 of Mail/SpamAssassin/Bayes.pm
# once (162µs+8µs) by DB_File::BEGIN@163 at line 163 of DB_File.pm
# once (160µs+9µs) by Mail::SpamAssassin::Plugin::RelayEval::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/RelayEval.pm
# once (161µs+8µs) by Mail::SpamAssassin::Plugin::ReplaceTags::BEGIN@54 at line 54 of Mail/SpamAssassin/Plugin/ReplaceTags.pm
# once (163µs+4µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@97 at line 97 of Mail/SpamAssassin/Plugin/Hashcash.pm
# once (159µs+7µs) by Mail::SpamAssassin::Plugin::ImageInfo::BEGIN@84 at line 84 of Mail/SpamAssassin/Plugin/ImageInfo.pm
# once (149µs+17µs) by Net::LibIDN::BEGIN@7 at line 7 of Net/LibIDN.pm
# once (157µs+9µs) by Razor2::Logger::BEGIN@12 at line 12 of Razor2/Logger.pm
# once (158µs+7µs) by Mail::SpamAssassin::Plugin::MIMEHeader::BEGIN@67 at line 67 of Mail/SpamAssassin/Plugin/MIMEHeader.pm
# once (157µs+8µs) by Mail::SpamAssassin::ArchiveIterator::BEGIN@27 at line 27 of Mail/SpamAssassin/ArchiveIterator.pm
# once (157µs+8µs) by Mail::SpamAssassin::HTML::BEGIN@31 at line 31 of Mail/SpamAssassin/HTML.pm
# once (152µs+12µs) by Mail::SpamAssassin::Message::BEGIN@58 at line 58 of Mail/SpamAssassin/Message.pm
# once (159µs+5µs) by MIME::QuotedPrint::BEGIN@12 at line 12 of MIME/QuotedPrint.pm
# once (153µs+10µs) by Mail::SpamAssassin::Plugin::BEGIN@98 at line 98 of Mail/SpamAssassin/Plugin.pm
# once (146µs+16µs) by Mail::SpamAssassin::DnsResolver::BEGIN@46 at line 46 of Mail/SpamAssassin/DnsResolver.pm
# once (159µs+3µs) by Mail::SpamAssassin::DBBasedAddrList::BEGIN@27 at line 27 of Mail/SpamAssassin/DBBasedAddrList.pm
# once (154µs+6µs) by IO::Socket::INET::BEGIN@13 at line 13 of IO/Socket/INET.pm
# once (146µs+12µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@32 at line 32 of Mail/SpamAssassin/Dns.pm
# once (147µs+9µs) by Net::Config::BEGIN@19 at line 19 of Net/Config.pm
# once (149µs+6µs) by Net::Patricia::AF_INET::BEGIN@149 at line 149 of Net/Patricia.pm
# once (144µs+11µs) by IO::File::BEGIN@133 at line 133 of IO/File.pm
# once (149µs+4µs) by Razor2::Preproc::deNewline::BEGIN@2 at line 2 of Razor2/Preproc/deNewline.pm
# once (146µs+4µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@95 at line 95 of Mail/SpamAssassin/Plugin/Hashcash.pm
# once (147µs+3µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@31 at line 32 of Mail/SpamAssassin/BayesStore/DBM.pm
# once (139µs+10µs) by Razor2::Engine::VR8::BEGIN@3 at line 3 of Razor2/Engine/VR8.pm
# once (145µs+3µs) by Mail::SpamAssassin::HTML::BEGIN@33 at line 33 of Mail/SpamAssassin/HTML.pm
# once (142µs+5µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@56 at line 56 of Mail/SpamAssassin/PerMsgStatus.pm
# once (143µs+4µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@29 at line 29 of Mail/SpamAssassin/BayesStore/DBM.pm
# once (140µs+5µs) by Mail::SpamAssassin::DnsResolver::BEGIN@48 at line 48 of Mail/SpamAssassin/DnsResolver.pm
# once (137µs+6µs) by Mail::SpamAssassin::AICache::BEGIN@41 at line 41 of Mail/SpamAssassin/AICache.pm
# once (132µs+10µs) by Mail::SpamAssassin::BEGIN@79 at line 79 of Mail/SpamAssassin.pm
# once (128µs+13µs) by Mail::SpamAssassin::Message::Metadata::BEGIN@58 at line 58 of Mail/SpamAssassin/Message/Metadata.pm
# once (126µs+14µs) by Mail::SpamAssassin::Conf::BEGIN@91 at line 91 of Mail/SpamAssassin/Conf.pm
# once (137µs+3µs) by Mail::SpamAssassin::Plugin::Check::BEGIN@25 at line 25 of Mail/SpamAssassin/Plugin/Check.pm
# once (136µs+3µs) by Razor2::Client::Core::BEGIN@19 at line 19 of Razor2/Client/Core.pm
# once (134µs+4µs) by IO::Socket::SSL::BEGIN@250 at line 250 of IO/Socket/SSL.pm
# once (135µs+2µs) by Net::CIDR::Lite::BEGIN@5 at line 5 of Net/CIDR/Lite.pm
# once (129µs+9µs) by Mail::SpamAssassin::DnsResolver::BEGIN@51 at line 51 of Mail/SpamAssassin/DnsResolver.pm
# once (124µs+14µs) by Net::CIDR::Lite::Span::BEGIN@357 at line 357 of Net/CIDR/Lite.pm
# once (132µs+5µs) by Mail::SpamAssassin::BEGIN@82 at line 82 of Mail/SpamAssassin.pm
# once (124µs+11µs) by Mail::SpamAssassin::Plugin::Bayes::BEGIN@51 at line 52 of Mail/SpamAssassin/Plugin/Bayes.pm
# once (131µs+3µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@93 at line 93 of Mail/SpamAssassin/Plugin/Hashcash.pm
# once (122µs+8µs) by Mail::SpamAssassin::Plugin::TxRep::BEGIN@210 at line 210 of Mail/SpamAssassin/Plugin/TxRep.pm
# once (128µs+3µs) by URI::_idna::BEGIN@10 at line 10 of URI/_idna.pm
# once (127µs+3µs) by Mail::SpamAssassin::Plugin::MIMEHeader::BEGIN@68 at line 68 of Mail/SpamAssassin/Plugin/MIMEHeader.pm
# once (122µs+7µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@100 at line 101 of Mail/SpamAssassin/Plugin/Hashcash.pm
# once (124µs+5µs) by Razor2::Preproc::Manager::BEGIN@8 at line 8 of Razor2/Preproc/Manager.pm
# once (125µs+3µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@26 at line 26 of Mail/SpamAssassin/BayesStore/DBM.pm
# once (123µs+4µs) by Mail::SpamAssassin::Plugin::HTMLEval::BEGIN@27 at line 27 of Mail/SpamAssassin/Plugin/HTMLEval.pm
# once (125µs+3µs) by Mail::SpamAssassin::Plugin::Bayes::BEGIN@60 at line 60 of Mail/SpamAssassin/Plugin/Bayes.pm
# once (127µs+0s) by Net::Config::BEGIN@18 at line 18 of Net/Config.pm
# once (124µs+3µs) by Net::Cmd::BEGIN@21 at line 21 of Net/Cmd.pm
# once (122µs+4µs) by Mail::SpamAssassin::Util::TieOneStringHash::BEGIN@25 at line 25 of Mail/SpamAssassin/Util/TieOneStringHash.pm
# once (117µs+8µs) by IO::Socket::SSL::SSL_HANDLE::BEGIN@2129 at line 2129 of IO/Socket/SSL.pm
# once (108µs+14µs) by Mail::SpamAssassin::Bayes::BEGIN@43 at line 43 of Mail/SpamAssassin/Bayes.pm
# once (116µs+5µs) by Razor2::Client::Config::BEGIN@13 at line 13 of Razor2/Client/Config.pm
# once (115µs+4µs) by Mail::SpamAssassin::Plugin::AskDNS::BEGIN@192 at line 192 of Mail/SpamAssassin/Plugin/AskDNS.pm
# once (116µs+3µs) by Mail::SpamAssassin::Plugin::MIMEEval::BEGIN@28 at line 28 of Mail/SpamAssassin/Plugin/MIMEEval.pm
# once (115µs+3µs) by Mail::SpamAssassin::Plugin::URIDetail::BEGIN@71 at line 71 of Mail/SpamAssassin/Plugin/URIDetail.pm
# once (115µs+2µs) by Net::Patricia::AF_INET6::BEGIN@235 at line 235 of Net/Patricia.pm
# once (110µs+7µs) by Razor2::Client::Agent::BEGIN@25 at line 25 of Razor2/Client/Agent.pm
# once (113µs+2µs) by Razor2::Syslog::BEGIN@6 at line 6 of Razor2/Syslog.pm
# once (110µs+4µs) by Mail::SpamAssassin::Plugin::HeaderEval::BEGIN@24 at line 24 of Mail/SpamAssassin/Plugin/HeaderEval.pm
# once (105µs+8µs) by Razor2::Client::Engine::BEGIN@5 at line 5 of Razor2/Client/Engine.pm
# once (110µs+3µs) by Mail::SpamAssassin::Plugin::DNSEval::BEGIN@30 at line 30 of Mail/SpamAssassin/Plugin/DNSEval.pm
# once (110µs+0s) by IO::Socket::BEGIN@17 at line 17 of IO/Socket.pm
# once (105µs+5µs) by Razor2::String::BEGIN@7 at line 7 of Razor2/String.pm
# once (110µs+0s) by Mail::SpamAssassin::BEGIN@70 at line 70 of Mail/SpamAssassin.pm
# once (105µs+0s) by Net::LibIDN::BEGIN@6 at line 6 of Net/LibIDN.pm
# once (97µs+7µs) by Razor2::Engine::VR8::BEGIN@4 at line 4 of Razor2/Engine/VR8.pm
# once (101µs+0s) by Cwd::BEGIN@3 at line 3 of Cwd.pm
# once (99µs+0s) by Mail::SpamAssassin::Plugin::URIDNSBL::BEGIN@297 at line 297 of Mail/SpamAssassin/Plugin/URIDNSBL.pm
# once (97µs+0s) by Net::Cmd::BEGIN@19 at line 19 of Net/Cmd.pm
# once (96µs+0s) by Net::DNS::Resolver::Base::BEGIN@53 at line 53 of Net/DNS/Resolver/Base.pm
# once (95µs+0s) by Pod::Usage::BEGIN@21 at line 21 of Pod/Usage.pm
# once (93µs+0s) by Mail::SpamAssassin::PluginHandler::BEGIN@28 at line 28 of Mail/SpamAssassin/PluginHandler.pm
# once (85µs+4µs) by Razor2::Client::Engine::BEGIN@4 at line 4 of Razor2/Client/Engine.pm
# once (89µs+0s) by IO::Socket::BEGIN@12 at line 12 of IO/Socket.pm
# once (85µs+3µs) by Mail::SpamAssassin::AICache::BEGIN@46 at line 46 of Mail/SpamAssassin/AICache.pm
# once (87µs+0s) by IO::Socket::BEGIN@18 at line 18 of IO/Socket.pm
# once (86µs+0s) by Mail::SpamAssassin::Util::BEGIN@71 at line 71 of Mail/SpamAssassin/Util.pm
# once (85µs+0s) by Razor2::Logger::BEGIN@6 at line 6 of Razor2/Logger.pm
# once (85µs+0s) by Mail::SpamAssassin::Conf::BEGIN@85 at line 85 of Mail/SpamAssassin/Conf.pm
# once (84µs+0s) by Razor2::Client::Core::BEGIN@15 at line 15 of Razor2/Client/Core.pm
# once (82µs+0s) by Razor2::Preproc::Manager::BEGIN@4 at line 4 of Razor2/Preproc/Manager.pm
# once (81µs+0s) by Mail::SpamAssassin::ArchiveIterator::BEGIN@28 at line 28 of Mail/SpamAssassin/ArchiveIterator.pm
# once (80µs+0s) by IO::Socket::INET6::BEGIN@43 at line 43 of IO/Socket/INET6.pm
# once (80µs+0s) by Getopt::Long::BEGIN@25 at line 25 of Getopt/Long.pm
# once (79µs+0s) by Net::SSLeay::BEGIN@20 at line 20 of Net/SSLeay.pm
# once (77µs+0s) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@27 at line 27 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm
# once (76µs+0s) by IO::Socket::SSL::BEGIN@19 at line 19 of IO/Socket/SSL.pm
# once (72µs+3µs) by Razor2::Signature::Ephemeral::BEGIN@6 at line 6 of Razor2/Signature/Ephemeral.pm
# once (74µs+0s) by IO::Socket::INET::BEGIN@15 at line 15 of IO/Socket/INET.pm
# once (67µs+0s) by IO::Socket::INET::BEGIN@14 at line 14 of IO/Socket/INET.pm
# once (61µs+0s) by Razor2::Signature::Whiplash::BEGIN@10 at line 10 of Razor2/Signature/Whiplash.pm
# once (56µs+0s) by Mail::SpamAssassin::NetSet::BEGIN@28 at line 28 of Mail/SpamAssassin/NetSet.pm
# once (54µs+0s) by Razor2::Signature::Ephemeral::BEGIN@5 at line 5 of Razor2/Signature/Ephemeral.pm
# once (46µs+0s) by URI::_punycode::BEGIN@9 at line 9 of URI/_punycode.pm
# once (40µs+0s) by Encode::BEGIN@12 at line 12 of Encode.pm
# once (36µs+0s) by Encode::Alias::BEGIN@8 at line 8 of Encode/Alias.pm
# once (33µs+0s) by Sys::Syslog::BEGIN@6 at line 6 of Sys/Syslog.pm
# once (26µs+0s) by URI::Escape::BEGIN@140 at line 140 of URI/Escape.pm | ||||
29 | 282 | 614µs | my $pkg = shift; | ||
30 | 282 | 866µs | my $callpkg = caller($ExportLevel); | ||
31 | |||||
32 | 282 | 680µs | if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { | ||
33 | 10 | 68µs | *{$callpkg."::import"} = \&import; | ||
34 | 5 | 52µs | return; | ||
35 | } | ||||
36 | |||||
37 | # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( | ||||
38 | 554 | 3.42ms | 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 | 651 | 3.29ms | my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"}; | ||
42 | 277 | 682µs | return export $pkg, $callpkg, @_ | ||
43 | if $Verbose or $Debug or $fail && @$fail > 1; | ||||
44 | 277 | 1.19ms | my $export_cache = ($Cache{$pkg} ||= {}); | ||
45 | 277 | 1.64ms | my $args = @_ or @_ = @$exports; | ||
46 | |||||
47 | 277 | 757µs | if ($args and not %$export_cache) { | ||
48 | s/^&//, $export_cache->{$_} = 1 | ||||
49 | 32 | 17.8ms | 1532 | 2.77ms | foreach (@$exports, @{"$pkg\::EXPORT_OK"}); # spent 2.77ms making 1532 calls to Exporter::CORE:subst, avg 2µs/call |
50 | } | ||||
51 | 277 | 443µ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 | 277 | 1.20ms | 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 | 153 | 30.8ms | 1478 | 3.53ms | foreach (@_); # spent 3.53ms making 1478 calls to Exporter::CORE:match, avg 2µs/call |
58 | } else { | ||||
59 | ($heavy = /\W/) and last | ||||
60 | 124 | 11.5ms | 893 | 2.02ms | foreach (@_); # spent 2.02ms making 893 calls to Exporter::CORE:match, avg 2µs/call |
61 | } | ||||
62 | 277 | 1.24ms | 31 | 5.67ms | return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy; # spent 5.67ms making 31 calls to Exporter::export, avg 183µs/call |
63 | local $SIG{__WARN__} = | ||||
64 | 246 | 3.84ms | sub {require Carp; &Carp::carp} if not $SIG{__WARN__}; | ||
65 | # shortcut for the common case of no type character | ||||
66 | 4910 | 54.2ms | *{"$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 1.13ms (302µs+831µs) within Exporter::export_to_level which was called 17 times, avg 67µs/call:
# 9 times (165µs+436µs) by Time::HiRes::import at line 69 of Time/HiRes.pm, avg 67µs/call
# 3 times (47µs+134µs) by NetAddr::IP::import at line 409 of NetAddr/IP.pm, avg 60µs/call
# 2 times (33µs+110µs) by NetAddr::IP::InetBase::import at line 277 of NetAddr/IP/InetBase.pm, avg 71µs/call
# 2 times (38µs+103µs) by NetAddr::IP::Util::import at line 189 of NetAddr/IP/Util.pm, avg 70µs/call
# once (19µs+49µs) by NetAddr::IP::Lite::import at line 1609 of NetAddr/IP/Lite.pm | ||||
81 | 34 | 435µs | 34 | 8.60ms | goto &{as_heavy()}; # spent 7.77ms making 17 calls to Exporter::Heavy::heavy_export_to_level, avg 457µs/call
# spent 831µs making 17 calls to Exporter::as_heavy, avg 49µs/call |
82 | } | ||||
83 | |||||
84 | sub export_tags { | ||||
85 | goto &{as_heavy()}; | ||||
86 | } | ||||
87 | |||||
88 | sub export_ok_tags { | ||||
89 | goto &{as_heavy()}; | ||||
90 | } | ||||
91 | |||||
92 | sub require_version { | ||||
93 | goto &{as_heavy()}; | ||||
94 | } | ||||
95 | |||||
96 | 1 | 13µs | 1; | ||
97 | __END__ | ||||
sub Exporter::CORE:match; # opcode | |||||
sub Exporter::CORE:subst; # opcode |