← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Thu Dec 15 15:23:56 2022
Reported on Thu Dec 15 15:27:01 2022

Filename/Users/ether/perl5/perlbrew/perls/36.0/lib/5.36.0/Digest/base.pm
StatementsExecuted 6 statements in 261µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11115µs17µsDigest::base::::BEGIN@3Digest::base::BEGIN@3
1114µs24µsDigest::base::::BEGIN@4Digest::base::BEGIN@4
0000s0sDigest::base::::add_bitsDigest::base::add_bits
0000s0sDigest::base::::addfileDigest::base::addfile
0000s0sDigest::base::::b64digestDigest::base::b64digest
0000s0sDigest::base::::base64_padded_digestDigest::base::base64_padded_digest
0000s0sDigest::base::::hexdigestDigest::base::hexdigest
0000s0sDigest::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
1package Digest::base;
2
3221µs219µs
# spent 17µs (15+2) within Digest::base::BEGIN@3 which was called: # once (15µs+2µs) by Mojo::Util::BEGIN@6 at line 3
use strict;
# spent 17µs making 1 call to Digest::base::BEGIN@3 # spent 2µs making 1 call to strict::import
42237µs244µs
# spent 24µs (4+20) within Digest::base::BEGIN@4 which was called: # once (4µs+20µs) by Mojo::Util::BEGIN@6 at line 4
use warnings;
# spent 24µs making 1 call to Digest::base::BEGIN@4 # spent 20µs making 1 call to warnings::import
5
611µsour $VERSION = "1.20";
7
8# subclass is supposed to implement at least these
9sub new;
10sub clone;
11sub add;
12sub digest;
13
14sub reset {
15 my $self = shift;
16 $self->new(@_); # ugly
17}
18
19sub addfile {
20 my ( $self, $handle ) = @_;
21
22 my $n;
23 my $buf = "";
24
25 while ( ( $n = read( $handle, $buf, 4 * 1024 ) ) ) {
26 $self->add($buf);
27 }
28 unless ( defined $n ) {
29 require Carp;
30 Carp::croak("Read failed: $!");
31 }
32
33 $self;
34}
35
36sub add_bits {
37 my $self = shift;
38 my $bits;
39 my $nbits;
40 if ( @_ == 1 ) {
41 my $arg = shift;
42 $bits = pack( "B*", $arg );
43 $nbits = length($arg);
44 }
45 else {
46 ( $bits, $nbits ) = @_;
47 }
48 if ( ( $nbits % 8 ) != 0 ) {
49 require Carp;
50 Carp::croak("Number of bits must be multiple of 8 for this algorithm");
51 }
52 return $self->add( substr( $bits, 0, $nbits / 8 ) );
53}
54
55sub hexdigest {
56 my $self = shift;
57 return unpack( "H*", $self->digest(@_) );
58}
59
60sub b64digest {
61 my $self = shift;
62 my $b64 = $self->base64_padded_digest;
63 $b64 =~ s/=+$//;
64 return $b64;
65}
66
67sub base64_padded_digest {
68 my $self = shift;
69 require MIME::Base64;
70 return MIME::Base64::encode( $self->digest(@_), "" );
71}
72
7312µs1;
74
75__END__