← Index
NYTProf Performance Profile   « block view • line view • sub view »
For xt/tapper-mcp-scheduler-with-db-longrun.t
  Run on Tue May 22 17:18:39 2012
Reported on Tue May 22 17:22:35 2012

Filename/2home/ss5/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/MooseX/Traits/Util.pm
StatementsExecuted 41 statements in 620µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11177µs641µsMooseX::Traits::Util::::transform_traitMooseX::Traits::Util::transform_trait
11176µs10.9msMooseX::Traits::Util::::new_class_with_traitsMooseX::Traits::Util::new_class_with_traits
11161µs1.21msMooseX::Traits::Util::::resolve_traitsMooseX::Traits::Util::resolve_traits
33152µs1.45msMooseX::Traits::Util::::check_classMooseX::Traits::Util::check_class
11117µs22µsMooseX::Traits::Util::::BEGIN@2MooseX::Traits::Util::BEGIN@2
11111µs267µsMooseX::Traits::Util::::BEGIN@5MooseX::Traits::Util::BEGIN@5
1119µs23µsMooseX::Traits::Util::::BEGIN@3MooseX::Traits::Util::BEGIN@3
1118µs46µsMooseX::Traits::Util::::BEGIN@9MooseX::Traits::Util::BEGIN@9
1115µs5µsMooseX::Traits::Util::::CORE:matchMooseX::Traits::Util::CORE:match (opcode)
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package MooseX::Traits::Util;
2324µs226µs
# spent 22µs (17+5) within MooseX::Traits::Util::BEGIN@2 which was called: # once (17µs+5µs) by MooseX::Traits::BEGIN@4 at line 2
use strict;
# spent 22µs making 1 call to MooseX::Traits::Util::BEGIN@2 # spent 5µs making 1 call to strict::import
3336µs238µs
# spent 23µs (9+15) within MooseX::Traits::Util::BEGIN@3 which was called: # once (9µs+15µs) by MooseX::Traits::BEGIN@4 at line 3
use warnings;
# spent 23µs making 1 call to MooseX::Traits::Util::BEGIN@3 # spent 15µs making 1 call to warnings::import
4
51257µs
# spent 267µs (11+257) within MooseX::Traits::Util::BEGIN@5 which was called: # once (11µs+257µs) by MooseX::Traits::BEGIN@4 at line 7
use Sub::Exporter -setup => {
# spent 257µs making 1 call to Sub::Exporter::__ANON__[Sub/Exporter.pm:756]
6 exports => ['new_class_with_traits'],
7328µs1267µs};
# spent 267µs making 1 call to MooseX::Traits::Util::BEGIN@5
8
93310µs284µs
# spent 46µs (8+38) within MooseX::Traits::Util::BEGIN@9 which was called: # once (8µs+38µs) by MooseX::Traits::BEGIN@4 at line 9
use Carp qw(confess);
# spent 46µs making 1 call to MooseX::Traits::Util::BEGIN@9 # spent 38µs making 1 call to Exporter::import
10
11# note: "$class" throughout is "class name" or "instance of class
12# name"
13
14
# spent 1.45ms (52µs+1.40) within MooseX::Traits::Util::check_class which was called 3 times, avg 483µs/call: # once (34µs+646µs) by MooseX::Traits::Util::new_class_with_traits at line 63 # once (9µs+380µs) by MooseX::Traits::Util::resolve_traits at line 43 # once (9µs+371µs) by MooseX::Traits::Util::transform_trait at line 25
sub check_class {
15658µs my $class = shift;
16
1731.40ms confess "We can't interact with traits for a class ($class) ".
# spent 1.40ms making 3 calls to Moose::Object::does, avg 466µs/call
18 "that does not do MooseX::Traits" unless $class->does('MooseX::Traits');
19}
20
21
# spent 641µs (77+564) within MooseX::Traits::Util::transform_trait which was called: # once (77µs+564µs) by MooseX::Traits::Util::resolve_traits at line 48
sub transform_trait {
22766µs my ($class, $name) = @_;
2315µs return $1 if $name =~ /^[+](.+)$/;
# spent 5µs making 1 call to MooseX::Traits::Util::CORE:match
24
251380µs check_class($class);
# spent 380µs making 1 call to MooseX::Traits::Util::check_class
26
272173µs my $namespace = $class->meta->find_attribute_by_name('_trait_namespace');
# spent 134µs making 1 call to Class::MOP::Class::find_attribute_by_name # spent 39µs making 1 call to Tapper::MCP::Scheduler::Algorithm::meta
28 my $base;
2916µs if($namespace->has_default){
# spent 6µs making 1 call to Class::MOP::Mixin::AttributeCore::has_default
30 $base = $namespace->default;
31 if(ref $base eq 'CODE'){
32 $base = $base->();
33 }
34 }
35
36 return $name unless $base;
37 return join '::', $base, $name;
38}
39
40
# spent 1.21ms (61µs+1.15) within MooseX::Traits::Util::resolve_traits which was called: # once (61µs+1.15ms) by MooseX::Traits::Util::new_class_with_traits at line 66
sub resolve_traits {
41837µs my ($class, @traits) = @_;
42
431389µs check_class($class);
# spent 389µs making 1 call to MooseX::Traits::Util::check_class
44
45 return map {
46 my $orig = $_;
47 if(!ref $orig){
481641µs my $transformed = transform_trait($class, $orig);
# spent 641µs making 1 call to MooseX::Traits::Util::transform_trait
4918µs Class::MOP::load_class($transformed);
# spent 8µs making 1 call to Class::MOP::load_class
50 $transformed;
51 }
52 else {
53 $orig;
54 }
55 } @traits;
56}
57
581300nsmy $anon_serial = 0;
59
60
# spent 10.9ms (76µs+10.9) within MooseX::Traits::Util::new_class_with_traits which was called: # once (76µs+10.9ms) by MooseX::Traits::with_traits at line 24 of MooseX/Traits.pm
sub new_class_with_traits {
61658µs my ($class, @traits) = @_;
62
631680µs check_class($class);
# spent 680µs making 1 call to MooseX::Traits::Util::check_class
64
65 my $meta;
6611.21ms @traits = resolve_traits($class, @traits);
# spent 1.21ms making 1 call to MooseX::Traits::Util::resolve_traits
6748.97ms if (@traits) {
# spent 8.91ms making 1 call to Moose::Meta::Class::create # spent 60µs making 2 calls to Tapper::MCP::Scheduler::Algorithm::meta, avg 30µs/call # spent 2µs making 1 call to Class::MOP::Package::name
68 $meta = $class->meta->create(
69 join(q{::} => 'MooseX::Traits::__ANON__::SERIAL', ++$anon_serial),
70 superclasses => [ $class->meta->name ],
71 roles => \@traits,
72 cache => 1,
73 );
74 }
75
76 # if no traits were given just return the class meta
77 return $meta ? $meta : $class->meta;
78}
79
8013µs1;
 
# spent 5µs within MooseX::Traits::Util::CORE:match which was called: # once (5µs+0s) by MooseX::Traits::Util::transform_trait at line 23
sub MooseX::Traits::Util::CORE:match; # opcode