← Index
NYTProf Performance Profile   « block view • line view • sub view »
For 01.HTTP.t
  Run on Tue May 4 15:25:55 2010
Reported on Tue May 4 15:26:18 2010

File /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Devel/GlobalDestruction.pm
Statements Executed 20
Statement Execution Time 12.2ms
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1113.36ms36.7msDevel::GlobalDestruction::::BEGIN@26Devel::GlobalDestruction::BEGIN@26
11125µs28µsDevel::GlobalDestruction::::BEGIN@5Devel::GlobalDestruction::BEGIN@5
11119µs307µsDevel::GlobalDestruction::::BEGIN@10Devel::GlobalDestruction::BEGIN@10
11110µs22µsDevel::GlobalDestruction::::BEGIN@6Devel::GlobalDestruction::BEGIN@6
1118µs50µsDevel::GlobalDestruction::::BEGIN@8Devel::GlobalDestruction::BEGIN@8
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1#!/usr/bin/perl
2
3package Devel::GlobalDestruction;
4
5329µs232µs
# spent 28µs (25+4) within Devel::GlobalDestruction::BEGIN@5 which was called # once (25µs+4µs) by Class::MOP::Class::BEGIN@15 at line 5
use strict;
# spent 28µs making 1 call to Devel::GlobalDestruction::BEGIN@5 # spent 4µs making 1 call to strict::import
6331µs234µs
# spent 22µs (10+12) within Devel::GlobalDestruction::BEGIN@6 which was called # once (10µs+12µs) by Class::MOP::Class::BEGIN@15 at line 6
use warnings;
# spent 22µs making 1 call to Devel::GlobalDestruction::BEGIN@6 # spent 12µs making 1 call to warnings::import
7
8385µs292µs
# spent 50µs (8+42) within Devel::GlobalDestruction::BEGIN@8 which was called # once (8µs+42µs) by Class::MOP::Class::BEGIN@15 at line 8
use vars qw($VERSION @ISA);
# spent 50µs making 1 call to Devel::GlobalDestruction::BEGIN@8 # spent 42µs making 1 call to vars::import
9
10
# spent 307µs (19+288) within Devel::GlobalDestruction::BEGIN@10 which was called # once (19µs+288µs) by Class::MOP::Class::BEGIN@15 at line 24
BEGIN {
111600ns $VERSION = '0.02';
12
131200ns local $@;
14
15 eval {
161400ns require XSLoader;
171299µs1288µs __PACKAGE__->XSLoader::load($VERSION);
# spent 288µs making 1 call to XSLoader::load
181900ns 1;
1916µs } or do {
20 require DynaLoader;
21 push @ISA, 'DynaLoader';
22 __PACKAGE__->bootstrap($VERSION);
23 };
24172µs1307µs}
# spent 307µs making 1 call to Devel::GlobalDestruction::BEGIN@10
25
26113µs1386µs
# spent 36.7ms (3.36+33.4) within Devel::GlobalDestruction::BEGIN@26 which was called # once (3.36ms+33.4ms) by Class::MOP::Class::BEGIN@15 at line 29
use Sub::Exporter -setup => {
# spent 386µs making 1 call to Sub::Exporter::__ANON__[Sub/Exporter.pm:756]
27 exports => [ qw(in_global_destruction) ],
28 groups => { default => [ -all ] },
29211.6ms136.7ms};
# spent 36.7ms making 1 call to Devel::GlobalDestruction::BEGIN@26
30
31111µs__PACKAGE__
32
33__END__
34
35=pod
36
37=head1 NAME
38
39Devel::GlobalDestruction - Expose PL_dirty, the flag which marks global
40destruction.
41
42=head1 SYNOPSIS
43
44 package Foo;
45 use Devel::GlobalDestruction;
46
47 use namespace::clean; # to avoid having an "in_global_destruction" method
48
49 sub DESTROY {
50 return if in_global_destruction;
51
52 do_something_a_little_tricky();
53 }
54
55=head1 DESCRIPTION
56
57Perl's global destruction is a little tricky to deal with WRT finalizers
58because it's not ordered and objects can sometimes disappear.
59
60Writing defensive destructors is hard and annoying, and usually if global
61destruction is happenning you only need the destructors that free up non
62process local resources to actually execute.
63
64For these constructors you can avoid the mess by simply bailing out if global
65destruction is in effect.
66
67=head1 EXPORTS
68
69This module uses L<Sub::Exporter> so the exports may be renamed, aliased, etc.
70
71=over 4
72
73=item in_global_destruction
74
75Returns the current value of C<PL_dirty>.
76
77=back
78
79=head1 VERSION CONTROL
80
81This module is maintained using Darcs. You can get the latest version from
82L<http://nothingmuch.woobling.org/code>, and use C<darcs send> to commit
83changes.
84
85=head1 AUTHOR
86
87Yuval Kogman E<lt>nothingmuch@woobling.orgE<gt>
88
89=head1 COPYRIGHT
90
91 Copyright (c) 2008 Yuval Kogman. All rights reserved
92 This program is free software; you can redistribute
93 it and/or modify it under the same terms as Perl itself.
94
95=cut
96
97