Profile of /usr/local/lib/perl5/site_perl/5.10.1/MooseX/ClassAttribute.pm

← 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:21 2010

File | /usr/local/lib/perl5/site_perl/5.10.1/MooseX/ClassAttribute.pm
Statements Executed | 30
Statement Execution Time | 476µs

Subroutines — ordered by exclusive time
Calls | P | F | Exclusive Time | Inclusive Time | Subroutine
--- | --- | --- | --- | --- | ---
1 | 1 | 1 | 1.08ms | 202ms | MooseX::ClassAttribute::::BEGIN@11MooseX::ClassAttribute::BEGIN@11
2 | 2 | 2 | 32µs | 22.5ms | MooseX::ClassAttribute::::class_hasMooseX::ClassAttribute::class_has
1 | 1 | 1 | 18µs | 24.2ms | MooseX::ClassAttribute::::init_metaMooseX::ClassAttribute::init_meta
1 | 1 | 1 | 16µs | 19µs | MooseX::ClassAttribute::::BEGIN@3MooseX::ClassAttribute::BEGIN@3
1 | 1 | 1 | 12µs | 57µs | MooseX::ClassAttribute::::BEGIN@9MooseX::ClassAttribute::BEGIN@9
1 | 1 | 1 | 7µs | 29µs | MooseX::ClassAttribute::::BEGIN@10MooseX::ClassAttribute::BEGIN@10
1 | 1 | 1 | 7µs | 17µs | MooseX::ClassAttribute::::BEGIN@4MooseX::ClassAttribute::BEGIN@4

Call graph for these subroutines as a Graphviz dot language file.

Line | State ments | Time on line | Calls | Time in subs | Code
--- | --- | --- | --- | --- | ---
1 |  |  |  |  | package MooseX::ClassAttribute;
2 |  |  |  |  |
3 | 3 | 21µs | 2 | 22µs | # spent 19µs (16+3) within MooseX::ClassAttribute::BEGIN@3 which was called # once (16µs+3µs) by SimpleDB::Class::BEGIN@138 at line 3 use strict; # spent 19µs making 1 call to MooseX::ClassAttribute::BEGIN@3 # spent 3µs making 1 call to strict::import
4 | 3 | 46µs | 2 | 27µs | # spent 17µs (7+10) within MooseX::ClassAttribute::BEGIN@4 which was called # once (7µs+10µs) by SimpleDB::Class::BEGIN@138 at line 4 use warnings; # spent 17µs making 1 call to MooseX::ClassAttribute::BEGIN@4 # spent 10µs making 1 call to warnings::import
5 |  |  |  |  |
6 | 1 | 800ns |  |  | our $VERSION = '0.10';
7 | 1 | 500ns |  |  | our $AUTHORITY = 'cpan:DROLSKY';
8 |  |  |  |  |
9 | 3 | 76µs | 2 | 103µs | # spent 57µs (12+45) within MooseX::ClassAttribute::BEGIN@9 which was called # once (12µs+45µs) by SimpleDB::Class::BEGIN@138 at line 9 use Moose 0.89 (); # spent 57µs making 1 call to MooseX::ClassAttribute::BEGIN@9 # spent 45µs making 1 call to UNIVERSAL::VERSION
10 | 3 | 22µs | 2 | 50µs | # spent 29µs (7+21) within MooseX::ClassAttribute::BEGIN@10 which was called # once (7µs+21µs) by SimpleDB::Class::BEGIN@138 at line 10 use Moose::Exporter; # spent 29µs making 1 call to MooseX::ClassAttribute::BEGIN@10 # spent 21µs making 1 call to Moose::Exporter::import
11 | 3 | 252µs | 1 | 202ms | # spent 202ms (1.08+201) within MooseX::ClassAttribute::BEGIN@11 which was called # once (1.08ms+201ms) by SimpleDB::Class::BEGIN@138 at line 11 use MooseX::ClassAttribute::Role::Meta::Class; # spent 202ms making 1 call to MooseX::ClassAttribute::BEGIN@11
12 |  |  |  |  |
13 | 1 | 5µs | 1 | 395µs | Moose::Exporter->setup_import_methods # spent 395µs making 1 call to Moose::Exporter::setup_import_methods
14 |  |  |  |  | ( with_caller => [ 'class_has' ] );
15 |  |  |  |  |
16 |  |  |  |  |
17 |  |  |  |  | sub init_meta
18 |  |  |  |  | # spent 24.2ms (18µs+24.2) within MooseX::ClassAttribute::init_meta which was called # once (18µs+24.2ms) by Moose::Exporter::__ANON__[/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Moose/Exporter.pm:389] at line 354 of Moose/Exporter.pm {
19 | 4 | 13µs |  |  | shift;
20 |  |  |  |  | my %p = @_;
21 |  |  |  |  |
22 |  |  |  |  | Moose->init_meta(%p); # spent 292µs making 1 call to Moose::init_meta
23 |  |  |  |  |
24 |  |  |  |  | return
25 | 1 | 13µs | 2 | 50µs | Moose::Util::MetaRole::apply_metaclass_roles # spent 46µs making 1 call to Class::MOP::Class::DESTROY # spent 4µs making 1 call to Moose::Util::MetaRole::apply_metaclass_roles
26 |  |  |  |  | ( for_class => $p{for_class},
27 |  |  |  |  | metaclass_roles => [ 'MooseX::ClassAttribute::Role::Meta::Class' ],
28 |  |  |  |  | );
29 |  |  |  |  | }
30 |  |  |  |  |
31 |  |  |  |  | sub class_has
32 |  |  |  |  | # spent 22.5ms (32µs+22.5) within MooseX::ClassAttribute::class_has which was called 2 times, avg 11.3ms/call: # once (8µs+11.3ms) by Class::MOP::__ANON__[/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Class/MOP.pm:103] at line 342 of ../lib/SimpleDB/Class.pm # once (24µs+11.2ms) by MooseX::ClassAttribute::class_has at line 272 of Moose/Exporter.pm {
33 | 6 | 20µs |  |  | my $caller = shift;
34 |  |  |  |  | my $name = shift;
35 |  |  |  |  | my %options = @_;
36 |  |  |  |  |
37 |  |  |  |  | my $attrs = ref $name eq 'ARRAY' ? $name : [$name];
38 |  |  |  |  |
39 |  |  |  |  | Class::MOP::class_of($caller)
40 |  |  |  |  | ->add_class_attribute( $_, %options )
41 |  |  |  |  | for @{ $attrs }; # spent 11.2ms making 1 call to MooseX::ClassAttribute::Role::Meta::Class::add_class_attribute # spent 5µs making 1 call to Class::MOP::class_of
42 |  |  |  |  | }
43 |  |  |  |  |
44 | 1 | 7µs |  |  | 1;
45 |  |  |  |  |
46 |  |  |  |  | __END__
47 |  |  |  |  |
48 |  |  |  |  | =pod
49 |  |  |  |  |
50 |  |  |  |  | =head1 NAME
51 |  |  |  |  |
52 |  |  |  |  | MooseX::ClassAttribute - Declare class attributes Moose-style
53 |  |  |  |  |
54 |  |  |  |  | =head1 SYNOPSIS
55 |  |  |  |  |
56 |  |  |  |  | package My::Class;
57 |  |  |  |  |
58 |  |  |  |  | use Moose;
59 |  |  |  |  | use MooseX::ClassAttribute;
60 |  |  |  |  |
61 |  |  |  |  | class_has 'Cache' =>
62 |  |  |  |  | ( is => 'rw',
63 |  |  |  |  | isa => 'HashRef',
64 |  |  |  |  | default => sub { {} },
65 |  |  |  |  | );
66 |  |  |  |  |
67 |  |  |  |  | __PACKAGE__->meta()->make_immutable();
68 |  |  |  |  |
69 |  |  |  |  | no Moose;
70 |  |  |  |  | no MooseX::ClassAttribute;
71 |  |  |  |  |
72 |  |  |  |  | # then later ...
73 |  |  |  |  |
74 |  |  |  |  | My::Class->Cache()->{thing} = ...;
75 |  |  |  |  |
76 |  |  |  |  |
77 |  |  |  |  | =head1 DESCRIPTION
78 |  |  |  |  |
79 |  |  |  |  | This module allows you to declare class attributes in exactly the same
80 |  |  |  |  | way as object attributes, using C<class_has()> instead of C<has()>.
81 |  |  |  |  |
82 |  |  |  |  | You can use any feature of Moose's attribute declarations, including
83 |  |  |  |  | overriding a parent's attributes, delegation (C<handles>), and
84 |  |  |  |  | attribute metaclasses, and it should just work. The one exception is
85 |  |  |  |  | the "required" flag, which is not allowed for class attributes.
86 |  |  |  |  |
87 |  |  |  |  | The accessor methods for class attribute may be called on the class
88 |  |  |  |  | directly, or on objects of that class. Passing a class attribute to
89 |  |  |  |  | the constructor will not set it.
90 |  |  |  |  |
91 |  |  |  |  | =head1 FUNCTIONS
92 |  |  |  |  |
93 |  |  |  |  | This class exports one function when you use it, C<class_has()>. This
94 |  |  |  |  | works exactly like Moose's C<has()>, but it declares class attributes.
95 |  |  |  |  |
96 |  |  |  |  | One little nit is that if you include C<no Moose> in your class, you
97 |  |  |  |  | won't remove the C<class_has()> function. To do that you must include
98 |  |  |  |  | C<no MooseX::ClassAttribute> as well.
99 |  |  |  |  |
100 |  |  |  |  | =head2 Implementation and Immutability
101 |  |  |  |  |
102 |  |  |  |  | This module will add a role to your class's metaclass, See
103 |  |  |  |  | L<MooseX::ClassAttribute::Role::Meta::Class> for details. This role
104 |  |  |  |  | provides introspection methods for class attributes.
105 |  |  |  |  |
106 |  |  |  |  | Class attributes themselves do the
107 |  |  |  |  | L<MooseX::ClassAttribute::Role::Meta::Attribute> role.
108 |  |  |  |  |
109 |  |  |  |  | There is also a L<MooseX::ClassAttribute::Meta::Method::Accessor>
110 |  |  |  |  | which provides part of the inlining implementation for class
111 |  |  |  |  | attributes.
112 |  |  |  |  |
113 |  |  |  |  | =head2 Cooperation with Metaclasses and Traits
114 |  |  |  |  |
115 |  |  |  |  | This module should work with most attribute metaclasses and traits,
116 |  |  |  |  | but it's possible that conflicts could occur. This module has been
117 |  |  |  |  | tested to work with C<MooseX::AttributeHelpers>.
118 |  |  |  |  |
119 |  |  |  |  | =head1 DONATIONS
120 |  |  |  |  |
121 |  |  |  |  | If you'd like to thank me for the work I've done on this module,
122 |  |  |  |  | please consider making a "donation" to me via PayPal. I spend a lot of
123 |  |  |  |  | free time creating free software, and would appreciate any support
124 |  |  |  |  | you'd care to offer.
125 |  |  |  |  |
126 |  |  |  |  | Please note that B<I am not suggesting that you must do this> in order
127 |  |  |  |  | for me to continue working on this particular software. I will
128 |  |  |  |  | continue to do so, inasmuch as I have in the past, for as long as it
129 |  |  |  |  | interests me.
130 |  |  |  |  |
131 |  |  |  |  | Similarly, a donation made in this way will probably not make me work
132 |  |  |  |  | on this software much more, unless I get so many donations that I can
133 |  |  |  |  | consider working on free software full time, which seems unlikely at
134 |  |  |  |  | best.
135 |  |  |  |  |
136 |  |  |  |  | To donate, log into PayPal and send money to autarch@urth.org or use
137 |  |  |  |  | the button on this page:
138 |  |  |  |  | L<http://www.urth.org/~autarch/fs-donation.html>
139 |  |  |  |  |
140 |  |  |  |  | =head1 AUTHOR
141 |  |  |  |  |
142 |  |  |  |  | Dave Rolsky, C<< <autarch@urth.org> >>
143 |  |  |  |  |
144 |  |  |  |  | =head1 BUGS
145 |  |  |  |  |
146 |  |  |  |  | Please report any bugs or feature requests to
147 |  |  |  |  | C<bug-moosex-classattribute@rt.cpan.org>, or through the web interface
148 |  |  |  |  | at L<http://rt.cpan.org>. I will be notified, and then you'll
149 |  |  |  |  | automatically be notified of progress on your bug as I make changes.
150 |  |  |  |  |
151 |  |  |  |  | =head1 COPYRIGHT & LICENSE
152 |  |  |  |  |
153 |  |  |  |  | Copyright 2007-2008 Dave Rolsky, All Rights Reserved.
154 |  |  |  |  |
155 |  |  |  |  | This program is free software; you can redistribute it and/or modify
156 |  |  |  |  | it under the same terms as Perl itself.
157 |  |  |  |  |
158 |  |  |  |  | =cut