← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 21:42:38 2010
Reported on Wed Nov 17 22:09:08 2010

Filename/home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/KiokuDB/TypeMap/Resolver.pm
StatementsExecuted 20 statements in 3.33ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1119.94ms496msKiokuDB::TypeMap::Resolver::::BEGIN@9KiokuDB::TypeMap::Resolver::BEGIN@9
11173µs21.5msKiokuDB::TypeMap::Resolver::::BEGIN@4KiokuDB::TypeMap::Resolver::BEGIN@4
11146µs1.61msKiokuDB::TypeMap::Resolver::::BEGIN@11KiokuDB::TypeMap::Resolver::BEGIN@11
11142µs205µsKiokuDB::TypeMap::Resolver::::BEGIN@6KiokuDB::TypeMap::Resolver::BEGIN@6
11125µs25µsKiokuDB::TypeMap::Resolver::::BEGIN@8KiokuDB::TypeMap::Resolver::BEGIN@8
0000s0sKiokuDB::TypeMap::Resolver::::__ANON__[:21]KiokuDB::TypeMap::Resolver::__ANON__[:21]
0000s0sKiokuDB::TypeMap::Resolver::::__ANON__[:27]KiokuDB::TypeMap::Resolver::__ANON__[:27]
0000s0sKiokuDB::TypeMap::Resolver::::clear_compiledKiokuDB::TypeMap::Resolver::clear_compiled
0000s0sKiokuDB::TypeMap::Resolver::::collapse_methodKiokuDB::TypeMap::Resolver::collapse_method
0000s0sKiokuDB::TypeMap::Resolver::::compile_entryKiokuDB::TypeMap::Resolver::compile_entry
0000s0sKiokuDB::TypeMap::Resolver::::expand_methodKiokuDB::TypeMap::Resolver::expand_method
0000s0sKiokuDB::TypeMap::Resolver::::find_or_resolveKiokuDB::TypeMap::Resolver::find_or_resolve
0000s0sKiokuDB::TypeMap::Resolver::::id_methodKiokuDB::TypeMap::Resolver::id_method
0000s0sKiokuDB::TypeMap::Resolver::::refresh_methodKiokuDB::TypeMap::Resolver::refresh_method
0000s0sKiokuDB::TypeMap::Resolver::::register_compiledKiokuDB::TypeMap::Resolver::register_compiled
0000s0sKiokuDB::TypeMap::Resolver::::resolveKiokuDB::TypeMap::Resolver::resolve
0000s0sKiokuDB::TypeMap::Resolver::::resolve_fallbackKiokuDB::TypeMap::Resolver::resolve_fallback
0000s0sKiokuDB::TypeMap::Resolver::::resolve_fallback_with_metaKiokuDB::TypeMap::Resolver::resolve_fallback_with_meta
0000s0sKiokuDB::TypeMap::Resolver::::resolve_fallback_without_metaKiokuDB::TypeMap::Resolver::resolve_fallback_without_meta
0000s0sKiokuDB::TypeMap::Resolver::::resolvedKiokuDB::TypeMap::Resolver::resolved
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 KiokuDB::TypeMap::Resolver;
43169µs242.9ms
# spent 21.5ms (73µs+21.4) within KiokuDB::TypeMap::Resolver::BEGIN@4 which was called: # once (73µs+21.4ms) by KiokuDB::BEGIN@16 at line 4
use Moose;
# spent 21.5ms making 1 call to KiokuDB::TypeMap::Resolver::BEGIN@4 # spent 21.4ms making 1 call to Moose::Exporter::__ANON__[Moose/Exporter.pm:456]
5
63106µs2369µs
# spent 205µs (42+164) within KiokuDB::TypeMap::Resolver::BEGIN@6 which was called: # once (42µs+164µs) by KiokuDB::BEGIN@16 at line 6
use Carp qw(croak);
# spent 205µs making 1 call to KiokuDB::TypeMap::Resolver::BEGIN@6 # spent 164µs making 1 call to Exporter::import
7
8388µs125µs
# spent 25µs within KiokuDB::TypeMap::Resolver::BEGIN@8 which was called: # once (25µs+0s) by KiokuDB::BEGIN@16 at line 8
use KiokuDB::TypeMap;
# spent 25µs making 1 call to KiokuDB::TypeMap::Resolver::BEGIN@8
93709µs1496ms
# spent 496ms (9.94+487) within KiokuDB::TypeMap::Resolver::BEGIN@9 which was called: # once (9.94ms+487ms) by KiokuDB::BEGIN@16 at line 9
use KiokuDB::TypeMap::Entry::MOP;
# spent 496ms making 1 call to KiokuDB::TypeMap::Resolver::BEGIN@9
10
1132.06ms23.18ms
# spent 1.61ms (46µs+1.57) within KiokuDB::TypeMap::Resolver::BEGIN@11 which was called: # once (46µs+1.57ms) by KiokuDB::BEGIN@16 at line 11
use namespace::clean -except => 'meta';
# spent 1.61ms making 1 call to KiokuDB::TypeMap::Resolver::BEGIN@11 # spent 1.57ms making 1 call to namespace::clean::import
12
13114µs17.94mshas typemap => (
# spent 7.94ms making 1 call to Moose::has
14 does => "KiokuDB::Role::TypeMap",
15 is => "ro",
16);
17
18has _compiled => (
19 isa => "HashRef",
20 is => "ro",
21 default => sub { return {} },
22122µs17.98ms);
# spent 7.98ms making 1 call to Moose::has
23
24has fallback_entry => (
25 does => "KiokuDB::TypeMap::Entry",
26 is => "ro",
27 default => sub { KiokuDB::TypeMap::Entry::MOP->new },
28122µs17.98ms);
# spent 7.98ms making 1 call to Moose::has
29
30sub clear_compiled {
31 my $self = shift;
32
33 %{ $self->_compiled } = ();
34}
35
36sub resolved {
37 my ( $self, $class ) = @_;
38
39 exists $self->_compiled->{$class};
40}
41
42sub collapse_method {
43 my ( $self, $class ) = @_;
44
45 return $self->find_or_resolve($class)->collapse_method;
46}
47
48sub expand_method {
49 my ( $self, $class ) = @_;
50
51 return $self->find_or_resolve($class)->expand_method;
52}
53
54sub refresh_method {
55 my ( $self, $class ) = @_;
56
57 return $self->find_or_resolve($class)->refresh_method;
58}
59
60sub id_method {
61 my ( $self, $class ) = @_;
62
63 return $self->find_or_resolve($class)->id_method;
64}
65
66sub compile_entry {
67 my ( $self, $class, $entry ) = @_;
68
69 return $self->register_compiled( $class, $entry->compile($class, $self) );
70}
71
72sub register_compiled {
73 my ( $self, $class, $compiled ) = @_;
74
75 return ( $self->_compiled->{$class} = $compiled );
76}
77
78sub find_or_resolve {
79 my ( $self, $class ) = @_;
80
81 return ( $self->_compiled->{$class} || $self->resolve($class) );
82}
83
84sub resolve {
85 my ( $self, $class ) = @_;
86
87 if ( my $entry = $self->typemap->resolve($class) ) {
88 return $self->compile_entry( $class, $entry );
89 } else {
90 return $self->resolve_fallback($class);
91 }
92}
93
94sub resolve_fallback {
95 my ( $self, $class ) = @_;
96
97 if ( my $meta = Class::MOP::get_metaclass_by_name($class) ) {
98 return $self->resolve_fallback_with_meta($class, $meta);
99 } else {
100 return $self->resolve_fallback_without_meta($class);
101 }
102}
103
104sub resolve_fallback_with_meta {
105 my ( $self, $class, $meta ) = @_;
106
107 # FIXME only allow with Storage?
108 return $self->compile_entry( $class => $self->fallback_entry );
109}
110
111sub resolve_fallback_without_meta {
112 my ( $self, $class ) = @_;
113
114 croak "$class has no metaclass, please provide a typemap entry or add to the allowed classes";
115}
116
117126µs216.6ms__PACKAGE__->meta->make_immutable;
# spent 16.5ms making 1 call to Class::MOP::Class::make_immutable # spent 101µs making 1 call to KiokuDB::TypeMap::Resolver::meta
118
119164µs__PACKAGE__
120
121149µs14.58ms__END__