Profile of Digest/base.pm

← Index
NYTProf Performance Profile «block view•line view•sub view»
For t/app_dpath.t
Run on Tue Jun 5 15:25:28 2012
Reported on Tue Jun 5 15:26:12 2012

Filename | /home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Digest/base.pm
Statements | Executed 6 statements in 1.54ms

Subroutines
Calls | P | F | Exclusive Time | Inclusive Time | Subroutine
--- | --- | --- | --- | --- | ---
1 | 1 | 1 | 57µs | 72µs | Digest::base::::BEGIN@3Digest::base::BEGIN@3
1 | 1 | 1 | 26µs | 116µs | Digest::base::::BEGIN@4Digest::base::BEGIN@4
0 | 0 | 0 | 0s | 0s | Digest::base::::add_bitsDigest::base::add_bits
0 | 0 | 0 | 0s | 0s | Digest::base::::addfileDigest::base::addfile
0 | 0 | 0 | 0s | 0s | Digest::base::::b64digestDigest::base::b64digest
0 | 0 | 0 | 0s | 0s | Digest::base::::hexdigestDigest::base::hexdigest
0 | 0 | 0 | 0s | 0s | Digest::base::::resetDigest::base::reset

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

Line | State ments | Time on line | Calls | Time in subs | Code
--- | --- | --- | --- | --- | ---
1 |  |  |  |  | package Digest::base;
2 |  |  |  |  |
3 | 2 | 130µs | 2 | 88µs | # spent 72µs (57+15) within Digest::base::BEGIN@3 which was called: # once (57µs+15µs) by Data::Structure::Util::BEGIN@9 at line 3 use strict; # spent 72µs making 1 call to Digest::base::BEGIN@3 # spent 15µs making 1 call to strict::import
4 | 2 | 1.39ms | 2 | 205µs | # spent 116µs (26+89) within Digest::base::BEGIN@4 which was called: # once (26µs+89µs) by Data::Structure::Util::BEGIN@9 at line 4 use vars qw($VERSION); # spent 116µs making 1 call to Digest::base::BEGIN@4 # spent 89µs making 1 call to vars::import
5 | 1 | 3µs |  |  | $VERSION = "1.16";
6 |  |  |  |  |
7 |  |  |  |  | # subclass is supposed to implement at least these
8 |  |  |  |  | sub new;
9 |  |  |  |  | sub clone;
10 |  |  |  |  | sub add;
11 |  |  |  |  | sub digest;
12 |  |  |  |  |
13 |  |  |  |  | sub reset {
14 |  |  |  |  | my $self = shift;
15 |  |  |  |  | $self->new(@_); # ugly
16 |  |  |  |  | }
17 |  |  |  |  |
18 |  |  |  |  | sub addfile {
19 |  |  |  |  | my ($self, $handle) = @_;
20 |  |  |  |  |
21 |  |  |  |  | my $n;
22 |  |  |  |  | my $buf = "";
23 |  |  |  |  |
24 |  |  |  |  | while (($n = read($handle, $buf, 4*1024))) {
25 |  |  |  |  | $self->add($buf);
26 |  |  |  |  | }
27 |  |  |  |  | unless (defined $n) {
28 |  |  |  |  | require Carp;
29 |  |  |  |  | Carp::croak("Read failed: $!");
30 |  |  |  |  | }
31 |  |  |  |  |
32 |  |  |  |  | $self;
33 |  |  |  |  | }
34 |  |  |  |  |
35 |  |  |  |  | sub add_bits {
36 |  |  |  |  | my $self = shift;
37 |  |  |  |  | my $bits;
38 |  |  |  |  | my $nbits;
39 |  |  |  |  | if (@_ == 1) {
40 |  |  |  |  | my $arg = shift;
41 |  |  |  |  | $bits = pack("B*", $arg);
42 |  |  |  |  | $nbits = length($arg);
43 |  |  |  |  | }
44 |  |  |  |  | else {
45 |  |  |  |  | ($bits, $nbits) = @_;
46 |  |  |  |  | }
47 |  |  |  |  | if (($nbits % 8) != 0) {
48 |  |  |  |  | require Carp;
49 |  |  |  |  | Carp::croak("Number of bits must be multiple of 8 for this algorithm");
50 |  |  |  |  | }
51 |  |  |  |  | return $self->add(substr($bits, 0, $nbits/8));
52 |  |  |  |  | }
53 |  |  |  |  |
54 |  |  |  |  | sub hexdigest {
55 |  |  |  |  | my $self = shift;
56 |  |  |  |  | return unpack("H*", $self->digest(@_));
57 |  |  |  |  | }
58 |  |  |  |  |
59 |  |  |  |  | sub b64digest {
60 |  |  |  |  | my $self = shift;
61 |  |  |  |  | require MIME::Base64;
62 |  |  |  |  | my $b64 = MIME::Base64::encode($self->digest(@_), "");
63 |  |  |  |  | $b64 =~ s/=+$//;
64 |  |  |  |  | return $b64;
65 |  |  |  |  | }
66 |  |  |  |  |
67 | 1 | 11µs |  |  | 1;
68 |  |  |  |  |
69 |  |  |  |  | __END__