Filename | /usr/local/lib/perl5/site_perl/Mail/SpamAssassin/Util/ScopedTimer.pm |
Statements | Executed 10 statements in 429µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 40µs | 49µs | BEGIN@22 | Mail::SpamAssassin::Util::ScopedTimer::
1 | 1 | 1 | 20µs | 45µs | BEGIN@23 | Mail::SpamAssassin::Util::ScopedTimer::
1 | 1 | 1 | 20µs | 25µs | BEGIN@24 | Mail::SpamAssassin::Util::ScopedTimer::
1 | 1 | 1 | 20µs | 67µs | BEGIN@25 | Mail::SpamAssassin::Util::ScopedTimer::
0 | 0 | 0 | 0s | 0s | DESTROY | Mail::SpamAssassin::Util::ScopedTimer::
0 | 0 | 0 | 0s | 0s | new | Mail::SpamAssassin::Util::ScopedTimer::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | # Helper code to debug dependencies and their versions. | ||||
2 | |||||
3 | # <@LICENSE> | ||||
4 | # Licensed to the Apache Software Foundation (ASF) under one or more | ||||
5 | # contributor license agreements. See the NOTICE file distributed with | ||||
6 | # this work for additional information regarding copyright ownership. | ||||
7 | # The ASF licenses this file to you under the Apache License, Version 2.0 | ||||
8 | # (the "License"); you may not use this file except in compliance with | ||||
9 | # the License. You may obtain a copy of the License at: | ||||
10 | # | ||||
11 | # http://www.apache.org/licenses/LICENSE-2.0 | ||||
12 | # | ||||
13 | # Unless required by applicable law or agreed to in writing, software | ||||
14 | # distributed under the License is distributed on an "AS IS" BASIS, | ||||
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
16 | # See the License for the specific language governing permissions and | ||||
17 | # limitations under the License. | ||||
18 | # </@LICENSE> | ||||
19 | |||||
20 | package Mail::SpamAssassin::Util::ScopedTimer; | ||||
21 | |||||
22 | 2 | 58µs | 2 | 58µs | # spent 49µs (40+9) within Mail::SpamAssassin::Util::ScopedTimer::BEGIN@22 which was called:
# once (40µs+9µs) by Mail::SpamAssassin::BEGIN@80 at line 22 # spent 49µs making 1 call to Mail::SpamAssassin::Util::ScopedTimer::BEGIN@22
# spent 9µs making 1 call to strict::import |
23 | 2 | 56µs | 2 | 70µs | # spent 45µs (20+25) within Mail::SpamAssassin::Util::ScopedTimer::BEGIN@23 which was called:
# once (20µs+25µs) by Mail::SpamAssassin::BEGIN@80 at line 23 # spent 45µs making 1 call to Mail::SpamAssassin::Util::ScopedTimer::BEGIN@23
# spent 25µs making 1 call to warnings::import |
24 | 2 | 54µs | 2 | 30µs | # spent 25µs (20+5) within Mail::SpamAssassin::Util::ScopedTimer::BEGIN@24 which was called:
# once (20µs+5µs) by Mail::SpamAssassin::BEGIN@80 at line 24 # spent 25µs making 1 call to Mail::SpamAssassin::Util::ScopedTimer::BEGIN@24
# spent 5µs making 1 call to bytes::import |
25 | 2 | 246µs | 2 | 114µs | # spent 67µs (20+47) within Mail::SpamAssassin::Util::ScopedTimer::BEGIN@25 which was called:
# once (20µs+47µs) by Mail::SpamAssassin::BEGIN@80 at line 25 # spent 67µs making 1 call to Mail::SpamAssassin::Util::ScopedTimer::BEGIN@25
# spent 47µs making 1 call to re::import |
26 | |||||
27 | 1 | 8µs | our @ISA = qw(); | ||
28 | |||||
29 | sub new { | ||||
30 | my $class = shift; | ||||
31 | my $self = { | ||||
32 | main => shift, | ||||
33 | timer => shift, | ||||
34 | }; | ||||
35 | $self->{main}->timer_start($self->{timer}); | ||||
36 | return bless ($self, $class); | ||||
37 | } | ||||
38 | |||||
39 | # OO hack: when the object goes out of scope, the timer ends. neat! | ||||
40 | sub DESTROY { | ||||
41 | my $self = shift; | ||||
42 | # best practices: prevent potential calls to eval and to system routines | ||||
43 | # in code of a DESTROY method from clobbering global variables $@ and $! | ||||
44 | local($@,$!); # keep outer error handling unaffected by DESTROY | ||||
45 | $self->{main} && $self->{timer} && $self->{main}->timer_end($self->{timer}); | ||||
46 | } | ||||
47 | |||||
48 | 1 | 7µs | 1; |