← Index
NYTProf Performance Profile   « block view • line view • sub view »
For 05.Domain_and_Item.t
  Run on Tue May 4 17:21:41 2010
Reported on Tue May 4 17:22:42 2010

File /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Devel/GlobalDestruction.pm
Statements Executed 20
Statement Execution Time 497µs
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1112.10ms6.21msDevel::GlobalDestruction::::BEGIN@26Devel::GlobalDestruction::BEGIN@26
11114µs17µsDevel::GlobalDestruction::::BEGIN@5Devel::GlobalDestruction::BEGIN@5
11113µs219µsDevel::GlobalDestruction::::BEGIN@10Devel::GlobalDestruction::BEGIN@10
1117µs16µsDevel::GlobalDestruction::::BEGIN@6Devel::GlobalDestruction::BEGIN@6
1116µs36µ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
5320µs220µs
# spent 17µs (14+3) within Devel::GlobalDestruction::BEGIN@5 which was called # once (14µs+3µs) by Class::MOP::Class::BEGIN@15 at line 5
use strict;
# spent 17µs making 1 call to Devel::GlobalDestruction::BEGIN@5 # spent 3µs making 1 call to strict::import
6321µs225µs
# spent 16µs (7+9) within Devel::GlobalDestruction::BEGIN@6 which was called # once (7µs+9µs) by Class::MOP::Class::BEGIN@15 at line 6
use warnings;
# spent 16µs making 1 call to Devel::GlobalDestruction::BEGIN@6 # spent 9µs making 1 call to warnings::import
7
8361µs266µs
# spent 36µs (6+30) within Devel::GlobalDestruction::BEGIN@8 which was called # once (6µs+30µs) by Class::MOP::Class::BEGIN@15 at line 8
use vars qw($VERSION @ISA);
# spent 36µs making 1 call to Devel::GlobalDestruction::BEGIN@8 # spent 30µs making 1 call to vars::import
9
10
# spent 219µs (13+206) within Devel::GlobalDestruction::BEGIN@10 which was called # once (13µs+206µs) by Class::MOP::Class::BEGIN@15 at line 24
BEGIN {
1134µs $VERSION = '0.02';
12
13 local $@;
14
15 eval {
16 require XSLoader;
17 __PACKAGE__->XSLoader::load($VERSION);
# spent 206µs making 1 call to XSLoader::load
18 1;
193215µs } or do {
20 require DynaLoader;
21 push @ISA, 'DynaLoader';
22 __PACKAGE__->bootstrap($VERSION);
23 };
24140µs1219µs}
# spent 219µs making 1 call to Devel::GlobalDestruction::BEGIN@10
25
26
# spent 6.21ms (2.10+4.11) within Devel::GlobalDestruction::BEGIN@26 which was called # once (2.10ms+4.11ms) by Class::MOP::Class::BEGIN@15 at line 29
use Sub::Exporter -setup => {
# spent 312µs making 1 call to Sub::Exporter::__ANON__[Sub/Exporter.pm:756]
27 exports => [ qw(in_global_destruction) ],
28 groups => { default => [ -all ] },
293132µs16.21ms};
# spent 6.21ms making 1 call to Devel::GlobalDestruction::BEGIN@26
30
3113µ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