← Index
NYTProf Performance Profile   « line view »
For /usr/local/bin/sa-learn
  Run on Tue Nov 7 05:38:10 2017
Reported on Tue Nov 7 06:16:03 2017

Filename/usr/local/lib/perl5/site_perl/Mail/SpamAssassin/Locker.pm
StatementsExecuted 39 statements in 8.80s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
821387µs8.80sMail::SpamAssassin::Locker::::jittery_one_second_sleepMail::SpamAssassin::Locker::jittery_one_second_sleep
11149µs63µsMail::SpamAssassin::Locker::::BEGIN@20Mail::SpamAssassin::Locker::BEGIN@20
11139µs131µsMail::SpamAssassin::Locker::::BEGIN@23Mail::SpamAssassin::Locker::BEGIN@23
11131µs2.43msMail::SpamAssassin::Locker::::BEGIN@24Mail::SpamAssassin::Locker::BEGIN@24
11126µs31µsMail::SpamAssassin::Locker::::BEGIN@22Mail::SpamAssassin::Locker::BEGIN@22
11126µs100µsMail::SpamAssassin::Locker::::BEGIN@29Mail::SpamAssassin::Locker::BEGIN@29
11123µs23µsMail::SpamAssassin::Locker::::newMail::SpamAssassin::Locker::new
11121µs44µsMail::SpamAssassin::Locker::::BEGIN@21Mail::SpamAssassin::Locker::BEGIN@21
11115µs15µsMail::SpamAssassin::Locker::::BEGIN@25Mail::SpamAssassin::Locker::BEGIN@25
11112µs12µsMail::SpamAssassin::Locker::::BEGIN@27Mail::SpamAssassin::Locker::BEGIN@27
0000s0sMail::SpamAssassin::Locker::::refresh_lockMail::SpamAssassin::Locker::refresh_lock
0000s0sMail::SpamAssassin::Locker::::safe_lockMail::SpamAssassin::Locker::safe_lock
0000s0sMail::SpamAssassin::Locker::::safe_unlockMail::SpamAssassin::Locker::safe_unlock
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# <@LICENSE>
2# Licensed to the Apache Software Foundation (ASF) under one or more
3# contributor license agreements. See the NOTICE file distributed with
4# this work for additional information regarding copyright ownership.
5# The ASF licenses this file to you under the Apache License, Version 2.0
6# (the "License"); you may not use this file except in compliance with
7# the License. You may obtain a copy of the License at:
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16# </@LICENSE>
17
18package Mail::SpamAssassin::Locker;
19
20264µs276µs
# spent 63µs (49+13) within Mail::SpamAssassin::Locker::BEGIN@20 which was called: # once (49µs+13µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@26 at line 20
use strict;
# spent 63µs making 1 call to Mail::SpamAssassin::Locker::BEGIN@20 # spent 13µs making 1 call to strict::import
21268µs268µs
# spent 44µs (21+23) within Mail::SpamAssassin::Locker::BEGIN@21 which was called: # once (21µs+23µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@26 at line 21
use warnings;
# spent 44µs making 1 call to Mail::SpamAssassin::Locker::BEGIN@21 # spent 23µs making 1 call to warnings::import
22270µs236µs
# spent 31µs (26+5) within Mail::SpamAssassin::Locker::BEGIN@22 which was called: # once (26µs+5µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@26 at line 22
use bytes;
# spent 31µs making 1 call to Mail::SpamAssassin::Locker::BEGIN@22 # spent 5µs making 1 call to bytes::import
23259µs2223µs
# spent 131µs (39+92) within Mail::SpamAssassin::Locker::BEGIN@23 which was called: # once (39µs+92µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@26 at line 23
use re 'taint';
# spent 131µs making 1 call to Mail::SpamAssassin::Locker::BEGIN@23 # spent 92µs making 1 call to re::import
24271µs24.83ms
# spent 2.43ms (31µs+2.40) within Mail::SpamAssassin::Locker::BEGIN@24 which was called: # once (31µs+2.40ms) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@26 at line 24
use Fcntl;
# spent 2.43ms making 1 call to Mail::SpamAssassin::Locker::BEGIN@24 # spent 2.40ms making 1 call to Exporter::import
25253µs115µs
# spent 15µs within Mail::SpamAssassin::Locker::BEGIN@25 which was called: # once (15µs+0s) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@26 at line 25
use Time::HiRes ();
# spent 15µs making 1 call to Mail::SpamAssassin::Locker::BEGIN@25
26
27284µs112µs
# spent 12µs within Mail::SpamAssassin::Locker::BEGIN@27 which was called: # once (12µs+0s) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@26 at line 27
use Mail::SpamAssassin;
# spent 12µs making 1 call to Mail::SpamAssassin::Locker::BEGIN@27
28
2912µs
# spent 100µs (26+74) within Mail::SpamAssassin::Locker::BEGIN@29 which was called: # once (26µs+74µs) by Mail::SpamAssassin::Locker::UnixNFSSafe::BEGIN@26 at line 31
use vars qw{
30 @ISA
311442µs2174µs};
# spent 100µs making 1 call to Mail::SpamAssassin::Locker::BEGIN@29 # spent 74µs making 1 call to vars::import
32
33112µs@ISA = qw();
34
35###########################################################################
36
37
# spent 23µs within Mail::SpamAssassin::Locker::new which was called: # once (23µs+0s) by Mail::SpamAssassin::Locker::UnixNFSSafe::new at line 43 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm
sub new {
3812µs my $class = shift;
3912µs $class = ref($class) || $class;
4012µs my $self = { };
41112µs bless ($self, $class);
42111µs $self;
43}
44
45###########################################################################
46
47sub safe_lock {
48 my ($self, $path, $max_retries, $mode) = @_;
49 # max_retries is optional, should default to about 30
50 # mode is UNIX-style and optional, should default to 0700,
51 # callers must specify --x bits
52 die "locker: safe_lock not implemented by Locker subclass";
53}
54
55###########################################################################
56
57sub safe_unlock {
58 my ($self, $path) = @_;
59 die "locker: safe_unlock not implemented by Locker subclass";
60}
61
62###########################################################################
63
64sub refresh_lock {
65 my ($self, $path) = @_;
66 die "locker: refresh_lock not implemented by Locker subclass";
67}
68
69###########################################################################
70
71
# spent 8.80s (387µs+8.80) within Mail::SpamAssassin::Locker::jittery_one_second_sleep which was called 8 times, avg 1.10s/call: # 5 times (162µs+5.47s) by Mail::SpamAssassin::Locker::UnixNFSSafe::safe_unlock at line 206 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm, avg 1.09s/call # 3 times (224µs+3.33s) by Mail::SpamAssassin::Locker::UnixNFSSafe::safe_lock at line 87 of Mail/SpamAssassin/Locker/UnixNFSSafe.pm, avg 1.11s/call
sub jittery_one_second_sleep {
72826µs my ($self) = @_;
7388.80s88.80s Time::HiRes::sleep(rand(1.0) + 0.5);
# spent 8.80s making 8 calls to Time::HiRes::sleep, avg 1.10s/call
74}
75
76###########################################################################
77
7818µs1;