| Filename | /home/doy/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/KiokuDB/Backend.pm |
| Statements | Executed 15 statements in 2.54ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 3.81ms | 33.6ms | KiokuDB::Backend::BEGIN@4 |
| 1 | 1 | 1 | 3.78ms | 24.9ms | KiokuDB::Backend::BEGIN@9 |
| 1 | 1 | 1 | 43µs | 10.5ms | KiokuDB::Backend::BEGIN@6 |
| 1 | 1 | 1 | 43µs | 246µs | KiokuDB::Backend::BEGIN@7 |
| 0 | 0 | 0 | 0s | 0s | KiokuDB::Backend::__ANON__[:19] |
| 0 | 0 | 0 | 0s | 0s | KiokuDB::Backend::__ANON__[:22] |
| 0 | 0 | 0 | 0s | 0s | KiokuDB::Backend::__ANON__[:23] |
| 0 | 0 | 0 | 0s | 0s | KiokuDB::Backend::new_from_dsn |
| 0 | 0 | 0 | 0s | 0s | KiokuDB::Backend::new_from_dsn_params |
| 0 | 0 | 0 | 0s | 0s | KiokuDB::Backend::parse_dsn_params |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | #!/usr/bin/perl | ||||
| 2 | |||||
| 3 | package KiokuDB::Backend; | ||||
| 4 | 3 | 428µs | 2 | 48.8ms | # spent 33.6ms (3.81+29.8) within KiokuDB::Backend::BEGIN@4 which was called:
# once (3.81ms+29.8ms) by KiokuDB::BEGIN@10 at line 4 # spent 33.6ms making 1 call to KiokuDB::Backend::BEGIN@4
# spent 15.2ms making 1 call to Moose::Exporter::__ANON__[Moose/Exporter.pm:456] |
| 5 | |||||
| 6 | 3 | 148µs | 2 | 21.0ms | # spent 10.5ms (43µs+10.5) within KiokuDB::Backend::BEGIN@6 which was called:
# once (43µs+10.5ms) by KiokuDB::BEGIN@10 at line 6 # spent 10.5ms making 1 call to KiokuDB::Backend::BEGIN@6
# spent 10.5ms making 1 call to Moose::Exporter::__ANON__[Moose/Exporter.pm:456] |
| 7 | 3 | 138µs | 2 | 449µs | # spent 246µs (43+203) within KiokuDB::Backend::BEGIN@7 which was called:
# once (43µs+203µs) by KiokuDB::BEGIN@10 at line 7 # spent 246µs making 1 call to KiokuDB::Backend::BEGIN@7
# spent 203µs making 1 call to Exporter::import |
| 8 | |||||
| 9 | 3 | 1.69ms | 2 | 33.0ms | # spent 24.9ms (3.78+21.2) within KiokuDB::Backend::BEGIN@9 which was called:
# once (3.78ms+21.2ms) by KiokuDB::BEGIN@10 at line 9 # spent 24.9ms making 1 call to KiokuDB::Backend::BEGIN@9
# spent 8.09ms making 1 call to namespace::clean::import |
| 10 | |||||
| 11 | coerce ( __PACKAGE__, | ||||
| 12 | from HashRef => via { | ||||
| 13 | my %p = %$_; | ||||
| 14 | my $class = delete $p{class} || die "Can't coerce backend from hash without a 'class' parameter"; | ||||
| 15 | |||||
| 16 | try { | ||||
| 17 | Class::MOP::load_class("KiokuDB::Backend::$class"); | ||||
| 18 | "KiokuDB::Backend::$class"->new(%p); | ||||
| 19 | } catch { | ||||
| 20 | Class::MOP::load_class($class); | ||||
| 21 | $class->new(%p); | ||||
| 22 | }; | ||||
| 23 | }, | ||||
| 24 | 1 | 41µs | 3 | 2.58ms | ); # spent 2.56ms making 1 call to Moose::Util::TypeConstraints::coerce
# spent 11µs making 1 call to Moose::Util::TypeConstraints::from
# spent 10µs making 1 call to Moose::Util::TypeConstraints::via |
| 25 | |||||
| 26 | 1 | 12µs | 1 | 1.06ms | requires qw( # spent 1.06ms making 1 call to Moose::Role::requires |
| 27 | exists | ||||
| 28 | insert | ||||
| 29 | get | ||||
| 30 | delete | ||||
| 31 | ); | ||||
| 32 | |||||
| 33 | sub new_from_dsn { | ||||
| 34 | my ( $class, $params, @extra ) = @_; | ||||
| 35 | |||||
| 36 | if ( defined $params ) { | ||||
| 37 | $class->new_from_dsn_params($class->parse_dsn_params($params), @extra); | ||||
| 38 | } else { | ||||
| 39 | return $class->new(@extra); | ||||
| 40 | } | ||||
| 41 | } | ||||
| 42 | |||||
| 43 | sub new_from_dsn_params { | ||||
| 44 | my ( $class, @params ) = @_; | ||||
| 45 | $class->new(@params); | ||||
| 46 | } | ||||
| 47 | |||||
| 48 | sub parse_dsn_params { | ||||
| 49 | my ( $self, $params ) = @_; | ||||
| 50 | |||||
| 51 | my @pairs = split ';', $params; | ||||
| 52 | |||||
| 53 | return map { | ||||
| 54 | my ( $key, $value ) = /(\w+)(?:=(.*))/; | ||||
| 55 | length($value) ? ( $key, $value ) : ( $key => 1 ); | ||||
| 56 | } @pairs; | ||||
| 57 | } | ||||
| 58 | |||||
| 59 | 1 | 43µs | __PACKAGE__ | ||
| 60 | |||||
| 61 | 1 | 40µs | 1 | 29.4ms | __END__ # spent 29.4ms making 1 call to B::Hooks::EndOfScope::__ANON__[B/Hooks/EndOfScope.pm:26] |