← Index
NYTProf Performance Profile   « line view »
For /usr/local/bin/sa-learn
  Run on Sun Nov 5 03:09:29 2017
Reported on Mon Nov 6 13:20:44 2017

Filename/usr/local/lib/perl5/5.24/Exporter.pm
StatementsExecuted 10001 statements in 89.7ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
28227612275.1ms110msExporter::::importExporter::import
75215.60ms6.58msExporter::::as_heavyExporter::as_heavy
2371215.55ms5.55msExporter::::CORE:matchExporter::CORE:match (opcode)
1607213.37ms3.37msExporter::::CORE:substExporter::CORE:subst (opcode)
5833962µs6.78msExporter::::exportExporter::export
1755284µs1.05msExporter::::export_to_levelExporter::export_to_level
0000s0sExporter::::__ANON__[:64]Exporter::__ANON__[:64]
0000s0sExporter::::export_failExporter::export_fail
0000s0sExporter::::export_ok_tagsExporter::export_ok_tags
0000s0sExporter::::export_tagsExporter::export_tags
0000s0sExporter::::require_versionExporter::require_version
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Exporter;
2
3117µsrequire 5.006;
4
5# Be lean.
6#use strict;
7#no strict 'refs';
8
912µsour $Debug = 0;
1012µsour $ExportLevel = 0;
1112µsour $Verbose ||= 0;
1212µsour $VERSION = '5.72';
13our (%Cache);
14
15
# spent 6.58ms (5.60+974µs) within Exporter::as_heavy which was called 75 times, avg 88µs/call: # 58 times (5.04ms+782µs) by Exporter::export at line 25, avg 100µs/call # 17 times (570µs+192µs) by Exporter::export_to_level at line 81, avg 45µs/call
sub as_heavy {
1675505µ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
1975744µs my $c = (caller(1))[3];
20751.30ms75750µs $c =~ s/.*:://;
# spent 750µs making 75 calls to Exporter::CORE:subst, avg 10µs/call
21150997µs \&{"Exporter::Heavy::heavy_$c"};
22}
23
24
# spent 6.78ms (962µs+5.82) within Exporter::export which was called 58 times, avg 117µs/call: # 31 times (548µs+4.86ms) by Exporter::import at line 62, avg 174µs/call # 17 times (243µs+476µs) by Exporter::Heavy::heavy_export_to_level at line 219 of Exporter/Heavy.pm, avg 42µs/call # 10 times (171µs+480µs) by IO::Socket::import at line 37 of IO/Socket.pm, avg 65µs/call
sub export {
251161.25ms11677.3ms goto &{as_heavy()};
# spent 71.5ms making 58 calls to Exporter::Heavy::heavy_export, avg 1.23ms/call # spent 5.82ms making 58 calls to Exporter::as_heavy, avg 100µs/call
26}
27
28
# spent 110ms (75.1+35.3) within Exporter::import which was called 282 times, avg 392µs/call: # 6 times (4.46ms+2.29ms) by POSIX::import at line 30 of POSIX.pm, avg 1.12ms/call # 2 times (166µs+4.06ms) by Getopt::Long::import at line 118 of Getopt/Long.pm, avg 2.11ms/call # once (59µs+7.31ms) by Sys::Syslog::BEGIN@9 at line 9 of Sys/Syslog.pm # once (5.13ms+383µs) by Net::SMTP::BEGIN@22 at line 22 of Net/SMTP.pm # once (3.48ms+315µs) by IO::Socket::INET::BEGIN@12 at line 12 of IO/Socket/INET.pm # once (3.10ms+315µs) by NetAddr::IP::UtilPolluted::BEGIN@198 at line 198 of NetAddr/IP/Util.pm # once (3.00ms+312µs) by Mail::SpamAssassin::DnsResolver::BEGIN@50 at line 50 of Mail/SpamAssassin/DnsResolver.pm # once (2.92ms+332µs) by Net::SSLeay::BEGIN@19 at line 19 of Net/SSLeay.pm # once (2.93ms+321µs) by Net::DNS::Resolver::Base::BEGIN@1 at line 1 of (eval 16)[Net/DNS/Resolver/Base.pm:29] # once (2.92ms+320µs) by IO::Socket::BEGIN@13 at line 13 of IO/Socket.pm # once (2.33ms+135µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@25 at line 25 of Mail/SpamAssassin/BayesStore/DBM.pm # once (2.32ms+130µs) by Mail::SpamAssassin::DBBasedAddrList::BEGIN@24 at line 24 of Mail/SpamAssassin/DBBasedAddrList.pm # once (1.84ms+540µs) by Net::Patricia::BEGIN@34 at line 34 of Net/Patricia.pm # once (61µs+1.96ms) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@31 at line 31 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm # once (58µs+1.89ms) by Razor2::Client::Core::BEGIN@16 at line 16 of Razor2/Client/Core.pm # once (1.60ms+340µs) by POSIX::BEGIN@11 at line 17 of POSIX.pm # once (1.31ms+126µs) by Mail::SpamAssassin::Util::BEGIN@77 at line 77 of Mail/SpamAssassin/Util.pm # once (1.23ms+129µs) by Mail::SpamAssassin::Locker::BEGIN@24 at line 24 of Mail/SpamAssassin/Locker.pm # once (1.21ms+125µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@96 at line 96 of Mail/SpamAssassin/Plugin/Hashcash.pm # once (1.19ms+124µs) by Digest::SHA::BEGIN@8 at line 8 of Digest/SHA.pm # once (190µs+700µs) by Mail::SpamAssassin::Conf::BEGIN@87 at line 87 of Mail/SpamAssassin/Conf.pm # once (654µs+172µs) by main::BEGIN@23 at line 23 of /usr/local/bin/sa-learn # once (67µs+701µs) by Mail::SpamAssassin::Plugin::HeaderEval::BEGIN@29 at line 29 of Mail/SpamAssassin/Plugin/HeaderEval.pm # once (108µs+650µs) by Net::SMTP::BEGIN@21 at line 21 of Net/SMTP.pm # once (642µs+63µs) by Razor2::Syslog::BEGIN@5 at line 5 of Razor2/Syslog.pm # once (92µs+605µs) by Mail::SpamAssassin::Plugin::MIMEEval::BEGIN@27 at line 27 of Mail/SpamAssassin/Plugin/MIMEEval.pm # once (603µs+61µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@108 at line 250 of DB_File.pm # once (591µs+65µs) by Razor2::Logger::BEGIN@9 at line 9 of Razor2/Logger.pm # once (585µs+64µs) by Razor2::Client::Agent::BEGIN@16 at line 16 of Razor2/Client/Agent.pm # once (583µs+58µs) by Razor2::Client::Agent::BEGIN@16 at line 147 of IO/File.pm # once (92µs+549µs) by Mail::SpamAssassin::Message::Metadata::BEGIN@57 at line 57 of Mail/SpamAssassin/Message/Metadata.pm # once (73µs+551µs) by Mail::SpamAssassin::Plugin::BodyEval::BEGIN@22 at line 22 of Mail/SpamAssassin/Plugin/BodyEval.pm # once (71µs+519µs) by Mail::SpamAssassin::Plugin::Check::BEGIN@27 at line 27 of Mail/SpamAssassin/Plugin/Check.pm # once (476µs+108µs) by NetAddr::IP::Lite::BEGIN@9 at line 86 of NetAddr/IP/InetBase.pm # once (71µs+509µs) by Mail::SpamAssassin::Message::Node::BEGIN@44 at line 44 of Mail/SpamAssassin/Message/Node.pm # once (72µs+503µs) by Mail::SpamAssassin::HTML::BEGIN@32 at line 32 of Mail/SpamAssassin/HTML.pm # once (77µs+492µs) by Mail::SpamAssassin::Message::BEGIN@57 at line 57 of Mail/SpamAssassin/Message.pm # once (66µs+500µs) by Mail::SpamAssassin::ArchiveIterator::BEGIN@29 at line 29 of Mail/SpamAssassin/ArchiveIterator.pm # once (88µs+451µs) by Net::DNS::RR::BEGIN@41 at line 41 of Net/DNS/RR.pm # once (85µs+453µs) by Net::DNS::Header::BEGIN@33 at line 33 of Net/DNS/Header.pm # once (80µs+449µs) by Net::DNS::RR::OPT::BEGIN@23 at line 23 of Net/DNS/RR/OPT.pm # once (97µs+420µs) by Mail::SpamAssassin::Plugin::URIDNSBL::BEGIN@296 at line 296 of Mail/SpamAssassin/Plugin/URIDNSBL.pm # once (72µs+442µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@59 at line 59 of Mail/SpamAssassin/PerMsgStatus.pm # once (70µs+441µs) by Mail::SpamAssassin::Conf::Parser::BEGIN@138 at line 138 of Mail/SpamAssassin/Conf/Parser.pm # once (464µs+41µs) by IO::Socket::IP::BEGIN@19 at line 30 of IO/Socket/IP.pm # once (78µs+427µs) by Mail::SpamAssassin::Message::Metadata::BEGIN@51.2 at line 51 of Mail/SpamAssassin/Message/Metadata/Received.pm # once (75µs+421µs) by Mail::SpamAssassin::Plugin::RelayEval::BEGIN@22 at line 22 of Mail/SpamAssassin/Plugin/RelayEval.pm # once (87µs+381µs) by Net::DNS::Question::BEGIN@32 at line 32 of Net/DNS/Question.pm # once (71µs+392µs) by Mail::SpamAssassin::DnsResolver::BEGIN@47 at line 47 of Mail/SpamAssassin/DnsResolver.pm # once (68µs+374µs) by Mail::SpamAssassin::Plugin::DNSEval::BEGIN@29 at line 29 of Mail/SpamAssassin/Plugin/DNSEval.pm # once (353µs+75µs) by Mail::SpamAssassin::Message::BEGIN@49 at line 50 of Mail/SpamAssassin/Message.pm # once (356µs+71µs) by Pod::Text::BEGIN@33 at line 33 of Pod/Text.pm # once (62µs+328µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@31 at line 31 of Mail/SpamAssassin/Dns.pm # once (311µs+23µs) by Razor2::Client::Core::BEGIN@26 at line 29 of Razor2/Client/Core.pm # once (302µs+25µs) by IO::Socket::INET6::BEGIN@28 at line 33 of IO/Socket/INET6.pm # once (94µs+229µs) by main::BEGIN@25 at line 25 of /usr/local/bin/sa-learn # once (242µs+43µs) by Razor2::Client::Agent::BEGIN@18 at line 18 of Razor2/Client/Agent.pm # once (241µs+15µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@1450 at line 1450 of Mail/SpamAssassin/BayesStore/DBM.pm # once (232µs+23µs) by IO::Socket::SSL::BEGIN@22 at line 22 of IO/Socket/SSL.pm # once (186µs+35µs) by IO::Socket::SSL::BEGIN@27 at line 30 of IO/Socket/SSL.pm # once (197µs+20µs) by Pod::Text::BEGIN@32 at line 32 of Pod/Text.pm # once (164µs+52µs) by Mail::SpamAssassin::Conf::Parser::BEGIN@140 at line 140 of Mail/SpamAssassin/Conf/Parser.pm # once (194µs+13µs) by IO::Socket::IP::BEGIN@34 at line 34 of IO/Socket/IP.pm # once (189µs+17µs) by Net::SMTP::BEGIN@20 at line 20 of Net/SMTP.pm # once (193µs+12µs) by IO::Socket::INET6::BEGIN@37 at line 40 of IO/Socket/INET6.pm # once (183µs+13µs) by Mail::SpamAssassin::Conf::SQL::BEGIN@44 at line 44 of Mail/SpamAssassin/Conf/SQL.pm # once (184µs+10µs) by Net::SMTP::BEGIN@18 at line 18 of Net/SMTP.pm # once (178µs+13µs) by Mail::SpamAssassin::Util::BEGIN@73 at line 73 of Mail/SpamAssassin/Util.pm # once (178µs+9µs) by Razor2::Logger::BEGIN@12 at line 12 of Razor2/Logger.pm # once (178µs+8µs) by Net::DNS::RR::OPT::BEGIN@22 at line 22 of Net/DNS/RR/OPT.pm # once (176µs+7µs) by Mail::SpamAssassin::DBBasedAddrList::BEGIN@28 at line 28 of Mail/SpamAssassin/DBBasedAddrList.pm # once (170µs+11µs) by Net::SSLeay::BEGIN@17 at line 17 of Net/SSLeay.pm # once (165µs+15µs) by Mail::SpamAssassin::Message::Node::BEGIN@46 at line 46 of Mail/SpamAssassin/Message/Node.pm # once (170µs+8µs) by Mail::SpamAssassin::Plugin::SpamCop::BEGIN@45 at line 45 of Mail/SpamAssassin/Plugin/SpamCop.pm # once (164µs+14µs) by Mail::SpamAssassin::Plugin::RelayEval::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/RelayEval.pm # once (166µs+12µs) by Net::Cmd::BEGIN@18 at line 18 of Net/Cmd.pm # once (156µs+21µs) by File::Path::BEGIN@6 at line 6 of File/Path.pm # once (166µs+9µs) by Mail::SpamAssassin::Plugin::HTTPSMismatch::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/HTTPSMismatch.pm # once (164µs+11µs) by Mail::SpamAssassin::Bayes::BEGIN@42 at line 42 of Mail/SpamAssassin/Bayes.pm # once (161µs+11µs) by Net::DNS::Update::BEGIN@35 at line 35 of Net/DNS/Update.pm # once (160µs+12µs) by NetAddr::IP::BEGIN@7 at line 7 of NetAddr/IP.pm # once (163µs+9µs) by main::BEGIN@70 at line 70 of /usr/local/bin/sa-learn # once (158µs+13µs) by Pod::Usage::BEGIN@19 at line 19 of Pod/Usage.pm # once (161µs+9µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@92 at line 92 of Mail/SpamAssassin/Plugin/Hashcash.pm # once (161µs+9µs) by Mail::SpamAssassin::Plugin::AutoLearnThreshold::BEGIN@55 at line 55 of Mail/SpamAssassin/Plugin/AutoLearnThreshold.pm # once (160µs+9µs) by Mail::SpamAssassin::HTML::BEGIN@31 at line 31 of Mail/SpamAssassin/HTML.pm # once (160µs+8µs) by Mail::SpamAssassin::Plugin::SPF::BEGIN@37 at line 37 of Mail/SpamAssassin/Plugin/SPF.pm # once (157µs+10µs) by Tie::Hash::BEGIN@190 at line 190 of Tie/Hash.pm # once (153µs+12µs) by URI::_idna::BEGIN@9 at line 9 of URI/_idna.pm # once (156µs+8µs) by Mail::SpamAssassin::Plugin::Razor2::BEGIN@44 at line 44 of Mail/SpamAssassin/Plugin/Razor2.pm # once (150µs+13µs) by IO::Socket::SSL::PublicSuffix::BEGIN@5 at line 5 of IO/Socket/SSL/PublicSuffix.pm # once (156µs+7µs) by Net::DNS::Resolver::Base::BEGIN@52 at line 52 of Net/DNS/Resolver/Base.pm # once (152µs+8µs) by Socket::BEGIN@697 at line 697 of Socket.pm # once (144µs+16µs) by Net::Cmd::BEGIN@20 at line 20 of Net/Cmd.pm # once (151µs+8µs) by Mail::SpamAssassin::Plugin::VBounce::BEGIN@31 at line 31 of Mail/SpamAssassin/Plugin/VBounce.pm # once (149µs+10µs) by Mail::SpamAssassin::Conf::BEGIN@89 at line 89 of Mail/SpamAssassin/Conf.pm # once (150µs+9µs) by Net::DNS::Packet::BEGIN@32 at line 32 of Net/DNS/Packet.pm # once (151µs+8µs) by IO::Socket::SSL::BEGIN@308 at line 317 of IO/Socket/SSL.pm # once (150µs+8µs) by Mail::SpamAssassin::BEGIN@83 at line 83 of Mail/SpamAssassin.pm # once (147µs+10µs) by Mail::SpamAssassin::Message::Metadata::BEGIN@60 at line 60 of Mail/SpamAssassin/Message/Metadata.pm # once (148µs+8µs) by Mail::SpamAssassin::Plugin::URIEval::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/URIEval.pm # once (149µs+6µs) by IO::Socket::SSL::SSL_Context::BEGIN@2159 at line 2159 of IO/Socket/SSL.pm # once (146µs+10µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@39 at line 39 of Mail/SpamAssassin/BayesStore/DBM.pm # once (146µs+8µs) by Net::DNS::DomainName::BEGIN@46 at line 46 of Net/DNS/DomainName.pm # once (146µs+8µs) by Mail::SpamAssassin::BEGIN@69 at line 69 of Mail/SpamAssassin.pm # once (145µs+8µs) by Mail::SpamAssassin::Plugin::Check::BEGIN@24 at line 24 of Mail/SpamAssassin/Plugin/Check.pm # once (143µs+9µs) by Mail::SpamAssassin::Plugin::MIMEHeader::BEGIN@67 at line 67 of Mail/SpamAssassin/Plugin/MIMEHeader.pm # once (144µs+8µs) by Sys::Syslog::BEGIN@7 at line 7 of Sys/Syslog.pm # once (142µs+8µs) by IO::Handle::BEGIN@266 at line 266 of IO/Handle.pm # once (141µs+9µs) by Time::Local::BEGIN@4 at line 4 of Time/Local.pm # once (140µs+9µs) by Mail::SpamAssassin::ArchiveIterator::BEGIN@27 at line 27 of Mail/SpamAssassin/ArchiveIterator.pm # once (139µs+10µs) by Mail::SpamAssassin::Plugin::BEGIN@98 at line 98 of Mail/SpamAssassin/Plugin.pm # once (142µs+7µs) by Socket6::BEGIN@213 at line 213 of Socket6.pm # once (142µs+7µs) by IO::Socket::SSL::BEGIN@23 at line 23 of IO/Socket/SSL.pm # once (141µs+8µs) by Mail::SpamAssassin::Plugin::BodyEval::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/BodyEval.pm # once (140µs+8µs) by Data::Dumper::BEGIN@22 at line 22 of Data/Dumper.pm # once (137µs+12µs) by IO::File::BEGIN@130 at line 130 of IO/File.pm # once (138µs+10µs) by IO::Handle::BEGIN@267 at line 267 of IO/Handle.pm # once (138µs+9µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@27 at line 27 of Mail/SpamAssassin/BayesStore/DBM.pm # once (140µs+7µs) by IO::Socket::INET::BEGIN@13 at line 13 of IO/Socket/INET.pm # once (138µs+8µs) by Sys::Hostname::BEGIN@5 at line 5 of Sys/Hostname.pm # once (139µs+8µs) by Net::Patricia::BEGIN@32 at line 32 of Net/Patricia.pm # once (137µs+8µs) by Mail::SpamAssassin::AICache::BEGIN@40 at line 40 of Mail/SpamAssassin/AICache.pm # once (136µs+8µs) by Sys::Syslog::BEGIN@5 at line 5 of Sys/Syslog.pm # once (138µs+6µs) by Encode::BEGIN@47 at line 47 of Encode.pm # once (134µs+9µs) by IO::File::BEGIN@131 at line 131 of IO/File.pm # once (131µs+11µs) by Razor2::String::BEGIN@4 at line 4 of Razor2/String.pm # once (134µs+8µs) by Mail::SpamAssassin::Plugin::DNSEval::BEGIN@28 at line 28 of Mail/SpamAssassin/Plugin/DNSEval.pm # once (132µs+9µs) by Mail::SpamAssassin::Util::BEGIN@74 at line 74 of Mail/SpamAssassin/Util.pm # once (134µs+8µs) by Mail::SpamAssassin::Plugin::DKIM::BEGIN@123 at line 123 of Mail/SpamAssassin/Plugin/DKIM.pm # once (130µs+11µs) by IO::Socket::SSL::SSL_HANDLE::BEGIN@2129 at line 2129 of IO/Socket/SSL.pm # once (133µs+8µs) by Net::DNS::RR::BEGIN@37 at line 37 of Net/DNS/RR.pm # once (132µs+8µs) by Razor2::Client::Engine::BEGIN@9 at line 9 of Razor2/Client/Engine.pm # once (132µs+8µs) by Net::DNS::Domain::BEGIN@41 at line 41 of Net/DNS/Domain.pm # once (131µs+8µs) by Mail::SpamAssassin::Conf::LDAP::BEGIN@44 at line 44 of Mail/SpamAssassin/Conf/LDAP.pm # once (131µs+7µs) by Mail::SpamAssassin::Plugin::HeaderEval::BEGIN@28 at line 28 of Mail/SpamAssassin/Plugin/HeaderEval.pm # once (130µs+7µs) by IO::Socket::UNIX::BEGIN@12 at line 12 of IO/Socket/UNIX.pm # once (130µs+8µs) by Net::Patricia::AF_INET6::BEGIN@234 at line 234 of Net/Patricia.pm # once (129µs+8µs) by Net::DNS::Question::BEGIN@30 at line 30 of Net/DNS/Question.pm # once (129µs+8µs) by Mail::SpamAssassin::Plugin::ImageInfo::BEGIN@84 at line 84 of Mail/SpamAssassin/Plugin/ImageInfo.pm # once (129µs+7µs) by Mail::SpamAssassin::Plugin::URIDNSBL::BEGIN@298 at line 298 of Mail/SpamAssassin/Plugin/URIDNSBL.pm # once (129µs+8µs) by Net::Patricia::AF_INET::BEGIN@148 at line 148 of Net/Patricia.pm # once (129µs+8µs) by Mail::SpamAssassin::Util::BEGIN@50 at line 50 of Mail/SpamAssassin/Util.pm # once (128µs+8µs) by Mail::SpamAssassin::Plugin::TxRep::BEGIN@210 at line 210 of Mail/SpamAssassin/Plugin/TxRep.pm # once (127µs+8µs) by Mail::SpamAssassin::Plugin::WLBLEval::BEGIN@21 at line 21 of Mail/SpamAssassin/Plugin/WLBLEval.pm # once (128µs+7µs) by Mail::SpamAssassin::Timeout::BEGIN@62 at line 62 of Mail/SpamAssassin/Timeout.pm # once (128µs+7µs) by SelectSaver::BEGIN@38 at line 38 of SelectSaver.pm # once (124µs+12µs) by Mail::SpamAssassin::BayesStore::BEGIN@35 at line 35 of Mail/SpamAssassin/BayesStore.pm # once (127µs+8µs) by Mail::SpamAssassin::Plugin::URIDetail::BEGIN@70 at line 70 of Mail/SpamAssassin/Plugin/URIDetail.pm # once (128µs+7µs) by Mail::SpamAssassin::ArchiveIterator::BEGIN@30 at line 30 of Mail/SpamAssassin/ArchiveIterator.pm # once (127µs+7µs) by Mail::SpamAssassin::Plugin::AskDNS::BEGIN@193 at line 193 of Mail/SpamAssassin/Plugin/AskDNS.pm # once (126µs+8µs) by Mail::SpamAssassin::Plugin::ReplaceTags::BEGIN@54 at line 54 of Mail/SpamAssassin/Plugin/ReplaceTags.pm # once (127µs+7µs) by Mail::SpamAssassin::Plugin::Bayes::BEGIN@51 at line 52 of Mail/SpamAssassin/Plugin/Bayes.pm # once (125µs+8µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@98 at line 98 of Mail/SpamAssassin/Plugin/Hashcash.pm # once (124µs+8µs) by DB_File::HASHINFO::BEGIN@16 at line 16 of DB_File.pm # once (125µs+6µs) by Mail::SpamAssassin::Conf::Parser::BEGIN@139 at line 139 of Mail/SpamAssassin/Conf/Parser.pm # once (123µs+8µs) by SelectSaver::BEGIN@39 at line 39 of SelectSaver.pm # once (125µs+6µs) by IO::Socket::BEGIN@14 at line 14 of IO/Socket.pm # once (124µs+7µs) by Net::DNS::Header::BEGIN@31 at line 31 of Net/DNS/Header.pm # once (121µs+10µs) by Mail::SpamAssassin::DBBasedAddrList::BEGIN@27 at line 27 of Mail/SpamAssassin/DBBasedAddrList.pm # once (124µs+7µs) by IO::Socket::IP::BEGIN@17 at line 17 of IO/Socket/IP.pm # once (125µs+5µs) by Mail::SpamAssassin::Plugin::AskDNS::BEGIN@192 at line 192 of Mail/SpamAssassin/Plugin/AskDNS.pm # once (123µs+7µs) by IO::BEGIN@6 at line 6 of IO.pm # once (122µs+8µs) by Mail::SpamAssassin::BEGIN@87 at line 87 of Mail/SpamAssassin.pm # once (122µs+7µs) by Mail::SpamAssassin::Plugin::Bayes::BEGIN@59 at line 59 of Mail/SpamAssassin/Plugin/Bayes.pm # once (121µs+9µs) by Mail::SpamAssassin::NetSet::BEGIN@29 at line 29 of Mail/SpamAssassin/NetSet.pm # once (121µs+8µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@64 at line 64 of Mail/SpamAssassin/PerMsgStatus.pm # once (121µs+8µs) by IO::Seekable::BEGIN@98 at line 98 of IO/Seekable.pm # once (122µs+7µs) by Mail::SpamAssassin::Plugin::TxRep::BEGIN@211 at line 211 of Mail/SpamAssassin/Plugin/TxRep.pm # once (120µs+8µs) by Razor2::String::BEGIN@5 at line 5 of Razor2/String.pm # once (120µs+8µs) by Razor2::Client::Config::BEGIN@15 at line 15 of Razor2/Client/Config.pm # once (120µs+8µs) by Mail::SpamAssassin::PerMsgLearner::BEGIN@57 at line 57 of Mail/SpamAssassin/PerMsgLearner.pm # once (119µs+8µs) by Net::LibIDN::BEGIN@7 at line 7 of Net/LibIDN.pm # once (120µs+7µs) by Mail::SpamAssassin::Plugin::MIMEEval::BEGIN@29 at line 29 of Mail/SpamAssassin/Plugin/MIMEEval.pm # once (118µs+8µs) by Mail::SpamAssassin::DnsResolver::BEGIN@46 at line 46 of Mail/SpamAssassin/DnsResolver.pm # once (119µs+7µs) by Mail::SpamAssassin::Message::BEGIN@58 at line 58 of Mail/SpamAssassin/Message.pm # once (121µs+5µs) by Razor2::Client::Config::BEGIN@13 at line 13 of Razor2/Client/Config.pm # once (119µs+6µs) by IO::Socket::INET6::BEGIN@42 at line 42 of IO/Socket/INET6.pm # once (118µs+8µs) by DB_File::BEGIN@163 at line 163 of DB_File.pm # once (118µs+7µs) by NetAddr::IP::Lite::BEGIN@5 at line 5 of NetAddr/IP/Lite.pm # once (117µs+8µs) by Net::DNS::Parameters::BEGIN@20 at line 20 of Net/DNS/Parameters.pm # once (117µs+7µs) by IO::Seekable::BEGIN@104 at line 104 of IO/Seekable.pm # once (117µs+6µs) by Mail::SpamAssassin::BEGIN@79 at line 79 of Mail/SpamAssassin.pm # once (118µs+5µs) by MIME::QuotedPrint::BEGIN@12 at line 12 of MIME/QuotedPrint.pm # once (116µs+6µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@62 at line 62 of Mail/SpamAssassin/PerMsgStatus.pm # once (116µs+7µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@28 at line 28 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm # once (114µs+6µs) by Mail::SpamAssassin::Util::BEGIN@78 at line 78 of Mail/SpamAssassin/Util.pm # once (112µs+7µs) by Net::Config::BEGIN@19 at line 19 of Net/Config.pm # once (112µs+6µs) by Mail::SpamAssassin::NetSet::BEGIN@35 at line 39 of Mail/SpamAssassin/NetSet.pm # once (110µs+8µs) by Mail::SpamAssassin::PluginHandler::BEGIN@29 at line 29 of Mail/SpamAssassin/PluginHandler.pm # once (112µs+6µs) by Mail::SpamAssassin::AICache::BEGIN@41 at line 41 of Mail/SpamAssassin/AICache.pm # once (110µs+8µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@26 at line 26 of Mail/SpamAssassin/BayesStore/DBM.pm # once (110µs+7µs) by Mail::SpamAssassin::BEGIN@84 at line 84 of Mail/SpamAssassin.pm # once (110µs+7µs) by Mail::SpamAssassin::AsyncLoop::BEGIN@44 at line 44 of Mail/SpamAssassin/AsyncLoop.pm # once (111µs+4µs) by Mail::SpamAssassin::Plugin::HTMLEval::BEGIN@27 at line 27 of Mail/SpamAssassin/Plugin/HTMLEval.pm # once (108µs+5µs) by Mail::SpamAssassin::AICache::BEGIN@39 at line 39 of Mail/SpamAssassin/AICache.pm # once (106µs+7µs) by Net::Patricia::AF_INET::BEGIN@149 at line 149 of Net/Patricia.pm # once (106µs+7µs) by IO::File::BEGIN@133 at line 133 of IO/File.pm # once (106µs+4µs) by Razor2::String::BEGIN@7 at line 7 of Razor2/String.pm # once (102µs+7µs) by Razor2::Client::Agent::BEGIN@25 at line 25 of Razor2/Client/Agent.pm # once (103µs+5µs) by NetAddr::IP::Lite::BEGIN@18 at line 239 of NetAddr/IP/Util.pm # once (103µs+5µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@37 at line 37 of Mail/SpamAssassin/BayesStore/DBM.pm # once (103µs+5µs) by Mail::SpamAssassin::DnsResolver::BEGIN@48 at line 48 of Mail/SpamAssassin/DnsResolver.pm # once (101µs+4µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@30 at line 30 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm # once (100µs+4µs) by Net::CIDR::Lite::Span::BEGIN@357 at line 357 of Net/CIDR/Lite.pm # once (97µs+7µs) by Razor2::Engine::VR8::BEGIN@3 at line 3 of Razor2/Engine/VR8.pm # once (98µs+5µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@32 at line 32 of Mail/SpamAssassin/Dns.pm # once (98µs+5µs) by Net::Patricia::AF_INET6::BEGIN@236 at line 236 of Net/Patricia.pm # once (98µs+5µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@29 at line 29 of Mail/SpamAssassin/BayesStore/DBM.pm # once (98µs+4µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@97 at line 97 of Mail/SpamAssassin/Plugin/Hashcash.pm # once (95µs+6µs) by Mail::SpamAssassin::BEGIN@82 at line 82 of Mail/SpamAssassin.pm # once (95µs+4µs) by Razor2::Preproc::deNewline::BEGIN@2 at line 2 of Razor2/Preproc/deNewline.pm # once (95µs+4µs) by IO::Socket::SSL::BEGIN@250 at line 250 of IO/Socket/SSL.pm # once (99µs+0s) by IO::Socket::SSL::BEGIN@19 at line 19 of IO/Socket/SSL.pm # once (90µs+8µs) by Mail::SpamAssassin::Util::TieOneStringHash::BEGIN@25 at line 25 of Mail/SpamAssassin/Util/TieOneStringHash.pm # once (93µs+4µs) by Mail::SpamAssassin::Plugin::HeaderEval::BEGIN@24 at line 24 of Mail/SpamAssassin/Plugin/HeaderEval.pm # once (91µs+5µs) by Razor2::Client::Engine::BEGIN@4 at line 4 of Razor2/Client/Engine.pm # once (93µs+2µs) by Net::CIDR::Lite::BEGIN@5 at line 5 of Net/CIDR/Lite.pm # once (91µs+4µs) by Razor2::Preproc::Manager::BEGIN@8 at line 8 of Razor2/Preproc/Manager.pm # once (92µs+3µs) by Mail::SpamAssassin::Plugin::MIMEEval::BEGIN@28 at line 28 of Mail/SpamAssassin/Plugin/MIMEEval.pm # once (88µs+7µs) by Mail::SpamAssassin::Message::Metadata::BEGIN@58 at line 58 of Mail/SpamAssassin/Message/Metadata.pm # once (90µs+3µs) by Mail::SpamAssassin::Plugin::URIDetail::BEGIN@71 at line 71 of Mail/SpamAssassin/Plugin/URIDetail.pm # once (89µs+3µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@93 at line 93 of Mail/SpamAssassin/Plugin/Hashcash.pm # once (87µs+4µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@95 at line 95 of Mail/SpamAssassin/Plugin/Hashcash.pm # once (87µs+4µs) by Mail::SpamAssassin::DnsResolver::BEGIN@51 at line 51 of Mail/SpamAssassin/DnsResolver.pm # once (91µs+0s) by Mail::SpamAssassin::Conf::BEGIN@85 at line 85 of Mail/SpamAssassin/Conf.pm # once (87µs+3µs) by Mail::SpamAssassin::HTML::BEGIN@33 at line 33 of Mail/SpamAssassin/HTML.pm # once (86µs+4µs) by Mail::SpamAssassin::Conf::BEGIN@91 at line 91 of Mail/SpamAssassin/Conf.pm # once (85µs+3µs) by Razor2::Engine::VR8::BEGIN@4 at line 4 of Razor2/Engine/VR8.pm # once (85µs+3µs) by Razor2::Client::Core::BEGIN@19 at line 19 of Razor2/Client/Core.pm # once (83µs+4µs) by Mail::SpamAssassin::PerMsgStatus::BEGIN@56 at line 56 of Mail/SpamAssassin/PerMsgStatus.pm # once (86µs+0s) by Mail::SpamAssassin::Util::BEGIN@71 at line 71 of Mail/SpamAssassin/Util.pm # once (83µs+3µs) by Mail::SpamAssassin::Plugin::MIMEHeader::BEGIN@68 at line 68 of Mail/SpamAssassin/Plugin/MIMEHeader.pm # once (83µs+3µs) by Mail::SpamAssassin::Plugin::Check::BEGIN@25 at line 25 of Mail/SpamAssassin/Plugin/Check.pm # once (83µs+2µs) by Net::Patricia::AF_INET6::BEGIN@235 at line 235 of Net/Patricia.pm # once (82µs+3µs) by Razor2::Client::Engine::BEGIN@5 at line 5 of Razor2/Client/Engine.pm # once (78µs+5µs) by Net::Cmd::BEGIN@21 at line 21 of Net/Cmd.pm # once (81µs+3µs) by URI::_idna::BEGIN@10 at line 10 of URI/_idna.pm # once (80µs+3µs) by Mail::SpamAssassin::Plugin::DNSEval::BEGIN@30 at line 30 of Mail/SpamAssassin/Plugin/DNSEval.pm # once (80µs+3µs) by Mail::SpamAssassin::Bayes::BEGIN@43 at line 43 of Mail/SpamAssassin/Bayes.pm # once (78µs+2µs) by Razor2::Syslog::BEGIN@6 at line 6 of Razor2/Syslog.pm # once (78µs+3µs) by Mail::SpamAssassin::BayesStore::DBM::BEGIN@31 at line 32 of Mail/SpamAssassin/BayesStore/DBM.pm # once (76µs+3µs) by Mail::SpamAssassin::Plugin::Bayes::BEGIN@60 at line 60 of Mail/SpamAssassin/Plugin/Bayes.pm # once (72µs+3µs) by Razor2::Signature::Ephemeral::BEGIN@6 at line 6 of Razor2/Signature/Ephemeral.pm # once (72µs+2µs) by Mail::SpamAssassin::Plugin::Hashcash::BEGIN@100 at line 101 of Mail/SpamAssassin/Plugin/Hashcash.pm # once (70µs+2µs) by Mail::SpamAssassin::AICache::BEGIN@46 at line 46 of Mail/SpamAssassin/AICache.pm # once (72µs+0s) by Mail::SpamAssassin::BEGIN@70 at line 70 of Mail/SpamAssassin.pm # once (71µs+0s) by Net::Config::BEGIN@18 at line 18 of Net/Config.pm # once (70µs+0s) by Net::LibIDN::BEGIN@6 at line 6 of Net/LibIDN.pm # once (68µs+0s) by Net::DNS::Resolver::Base::BEGIN@53 at line 53 of Net/DNS/Resolver/Base.pm # once (67µs+0s) by IO::Socket::BEGIN@17 at line 17 of IO/Socket.pm # once (66µs+0s) by Mail::SpamAssassin::PluginHandler::BEGIN@28 at line 28 of Mail/SpamAssassin/PluginHandler.pm # once (66µs+0s) by Razor2::Preproc::Manager::BEGIN@4 at line 4 of Razor2/Preproc/Manager.pm # once (65µs+0s) by Cwd::BEGIN@3 at line 3 of Cwd.pm # once (64µs+0s) by Net::Cmd::BEGIN@19 at line 19 of Net/Cmd.pm # once (64µs+0s) by Razor2::Signature::Whiplash::BEGIN@10 at line 10 of Razor2/Signature/Whiplash.pm # once (62µs+0s) by Getopt::Long::BEGIN@25 at line 25 of Getopt/Long.pm # once (62µs+0s) by Razor2::Client::Core::BEGIN@15 at line 15 of Razor2/Client/Core.pm # once (62µs+0s) by Mail::SpamAssassin::Plugin::URIDNSBL::BEGIN@297 at line 297 of Mail/SpamAssassin/Plugin/URIDNSBL.pm # once (61µs+0s) by Mail::SpamAssassin::ArchiveIterator::BEGIN@28 at line 28 of Mail/SpamAssassin/ArchiveIterator.pm # once (59µs+0s) by IO::Socket::BEGIN@12 at line 12 of IO/Socket.pm # once (59µs+0s) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@27 at line 27 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm # once (58µs+0s) by Net::SSLeay::BEGIN@20 at line 20 of Net/SSLeay.pm # once (58µs+0s) by Razor2::Logger::BEGIN@6 at line 6 of Razor2/Logger.pm # once (56µs+0s) by Razor2::Signature::Ephemeral::BEGIN@5 at line 5 of Razor2/Signature/Ephemeral.pm # once (56µs+0s) by Mail::SpamAssassin::NetSet::BEGIN@28 at line 28 of Mail/SpamAssassin/NetSet.pm # once (55µs+0s) by Pod::Usage::BEGIN@21 at line 21 of Pod/Usage.pm # once (52µs+0s) by IO::Socket::INET6::BEGIN@43 at line 43 of IO/Socket/INET6.pm # once (52µs+0s) by IO::Socket::BEGIN@18 at line 18 of IO/Socket.pm # once (51µs+0s) by IO::Socket::INET::BEGIN@14 at line 14 of IO/Socket/INET.pm # once (48µs+0s) by IO::Socket::INET::BEGIN@15 at line 15 of IO/Socket/INET.pm # once (30µs+0s) by URI::Escape::BEGIN@140 at line 140 of URI/Escape.pm # once (28µs+0s) by URI::_punycode::BEGIN@9 at line 9 of URI/_punycode.pm # once (27µs+0s) by Encode::Alias::BEGIN@8 at line 8 of Encode/Alias.pm # once (25µs+0s) by Encode::BEGIN@12 at line 12 of Encode.pm # once (22µs+0s) by Sys::Syslog::BEGIN@6 at line 6 of Sys/Syslog.pm
sub import {
29282613µs my $pkg = shift;
30282779µs my $callpkg = caller($ExportLevel);
31
32282586µs if ($pkg eq "Exporter" and @_ and $_[0] eq "import") {
331057µs *{$callpkg."::import"} = \&import;
34549µs return;
35 }
36
37 # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
385542.35ms 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.
416512.43ms my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"};
42277673µs return export $pkg, $callpkg, @_
43 if $Verbose or $Debug or $fail && @$fail > 1;
44277832µs my $export_cache = ($Cache{$pkg} ||= {});
452771.66ms my $args = @_ or @_ = @$exports;
46
47277549µs if ($args and not %$export_cache) {
48 s/^&//, $export_cache->{$_} = 1
493211.2ms15322.62ms foreach (@$exports, @{"$pkg\::EXPORT_OK"});
# spent 2.62ms making 1532 calls to Exporter::CORE:subst, avg 2µs/call
50 }
51277445µ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.
542771.01ms 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
5715313.9ms14783.25ms foreach (@_);
# spent 3.25ms making 1478 calls to Exporter::CORE:match, avg 2µs/call
58 } else {
59 ($heavy = /\W/) and last
601247.78ms8932.29ms foreach (@_);
# spent 2.29ms making 893 calls to Exporter::CORE:match, avg 3µs/call
61 }
622771.02ms315.41ms return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy;
# spent 5.41ms making 31 calls to Exporter::export, avg 174µs/call
63 local $SIG{__WARN__} =
642462.68ms sub {require Carp; &Carp::carp} if not $SIG{__WARN__};
65 # shortcut for the common case of no type character
66491035.9ms *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_;
67}
68
69# Default methods
70
71sub 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.05ms (284µs+762µs) within Exporter::export_to_level which was called 17 times, avg 62µs/call: # 9 times (154µs+422µs) by Time::HiRes::import at line 69 of Time/HiRes.pm, avg 64µs/call # 3 times (47µs+126µs) by NetAddr::IP::import at line 409 of NetAddr/IP.pm, avg 58µs/call # 2 times (33µs+82µs) by NetAddr::IP::InetBase::import at line 277 of NetAddr/IP/InetBase.pm, avg 57µs/call # 2 times (33µs+80µs) by NetAddr::IP::Util::import at line 189 of NetAddr/IP/Util.pm, avg 57µs/call # once (17µs+52µs) by NetAddr::IP::Lite::import at line 1609 of NetAddr/IP/Lite.pm
sub export_to_level {
8134376µs346.71ms goto &{as_heavy()};
# spent 5.95ms making 17 calls to Exporter::Heavy::heavy_export_to_level, avg 350µs/call # spent 762µs making 17 calls to Exporter::as_heavy, avg 45µs/call
82}
83
84sub export_tags {
85 goto &{as_heavy()};
86}
87
88sub export_ok_tags {
89 goto &{as_heavy()};
90}
91
92sub require_version {
93 goto &{as_heavy()};
94}
95
96110µs1;
97__END__
 
# spent 5.55ms within Exporter::CORE:match which was called 2371 times, avg 2µs/call: # 1478 times (3.25ms+0s) by Exporter::import at line 57, avg 2µs/call # 893 times (2.29ms+0s) by Exporter::import at line 60, avg 3µs/call
sub Exporter::CORE:match; # opcode
# spent 3.37ms within Exporter::CORE:subst which was called 1607 times, avg 2µs/call: # 1532 times (2.62ms+0s) by Exporter::import at line 49, avg 2µs/call # 75 times (750µs+0s) by Exporter::as_heavy at line 20, avg 10µs/call
sub Exporter::CORE:subst; # opcode