← Index
NYTProf Performance Profile   « block view • line view • sub view »
For /usr/bin/epoll_server.pl
  Run on Wed Jan 5 05:34:33 2011
Reported on Wed Jan 5 05:40:28 2011

File /usr/lib/perl5/vendor_perl/5.10.0/Crypt/Random/Generator.pm
Statements Executed 8
Statement Execution Time 1.78ms
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11154µs290µsCrypt::Random::Generator::::BEGIN@12Crypt::Random::Generator::BEGIN@12
11131µs166µsCrypt::Random::Generator::::BEGIN@13Crypt::Random::Generator::BEGIN@13
0000s0sCrypt::Random::Generator::::integerCrypt::Random::Generator::integer
0000s0sCrypt::Random::Generator::::newCrypt::Random::Generator::new
0000s0sCrypt::Random::Generator::::providersCrypt::Random::Generator::providers
0000s0sCrypt::Random::Generator::::strength_orderCrypt::Random::Generator::strength_order
0000s0sCrypt::Random::Generator::::stringCrypt::Random::Generator::string
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 -sw
2##
3##
4##
5## Copyright (c) 2001, Vipul Ved Prakash. All rights reserved.
6## This code is free software; you can redistribute it and/or modify
7## it under the same terms as Perl itself.
8##
9## $Id: Generator.pm,v 1.2 2001/06/22 03:43:51 vipul Exp $
10
11package Crypt::Random::Generator;
12384µs2525µs
# spent 290µs (54+235) within Crypt::Random::Generator::BEGIN@12 which was called # once (54µs+235µs) by Crypt::Random::BEGIN@24 at line 12
use Crypt::Random qw(makerandom makerandom_itv makerandom_octet);
# spent 290µs making 1 call to Crypt::Random::Generator::BEGIN@12 # spent 235µs making 1 call to Exporter::import
1331.67ms2302µs
# spent 166µs (31+135) within Crypt::Random::Generator::BEGIN@13 which was called # once (31µs+135µs) by Crypt::Random::BEGIN@24 at line 13
use Carp;
# spent 166µs making 1 call to Crypt::Random::Generator::BEGIN@13 # spent 136µs making 1 call to Exporter::import
14
1516µsmy @PROVIDERS = qw(devrandom devurandom egd rand);
16127µsmy %STRENGTH = ( 0 => [ qw(devurandom egd rand) ], 1 => [ qw(devrandom egd rand) ] );
17
18sub new {
19
20 my ($class, %params) = @_;
21
22 my $self = { _STRENGTH => \%STRENGTH, _PROVIDERS => \@PROVIDERS };
23
24 $$self{Strength} = $params{Strength} || 0;
25 $$self{Provider} = $params{Provider} || "";
26 $$self{ProviderParams} = $params{ProviderParams} || "";
27
28 bless $self, $class;
29
30 unless ($$self{Provider}) {
31 SELECT_PROVIDER: for ($self->strength_order($$self{Strength})) {
32 my $pname = $_; my $fqpname = "Crypt::Random::Provider::$pname";
33 if (eval "use $fqpname; $fqpname->available()") {
34 if (grep { $pname eq $_ } $self->providers) {
35 $$self{Provider} = $pname;
36 last SELECT_PROVIDER;
37 }
38 }
39 }
40 }
41
42 croak "No provider available.\n" unless $$self{Provider};
43 return $self;
44
45}
46
47
48sub providers {
49
50 my ($self, @args) = @_;
51 if (@args) { $$self{_PROVIDERS} = [@args] }
52 return @{$$self{_PROVIDERS}};
53
54}
55
56
57sub strength_order {
58
59 my ($self, $strength, @args) = @_;
60 if (@args) { $$self{_STRENGTH}{$strength} = [@args] }
61 return @{$$self{_STRENGTH}{$strength}}
62
63}
64
65
66sub integer {
67
68 my ($self, %params) = @_;
69 if ($params{Size}) {
70 return makerandom (
71 Size => $params{Size},
72 Provider => $$self{Provider},
73 Verbosity => $params{Verbosity} || $$self{Verbosity},
74 %{$$self{ProviderParams}},
75 )
76 } elsif ($params{Upper}) {
77 return makerandom_itv (
78 Lower => $params{Lower} || 0,
79 Upper => $params{Upper},
80 Provider => $$self{Provider},
81 Verbosity => $params{Verbosity} || $$self{Verbosity},
82 %{$$self{ProviderParams}},
83 )
84 }
85
86}
87
88
89sub string {
90
91 my ($self, %params) = @_;
92 return makerandom_octet (
93 %params,
94 Provider => $$self{Provider},
95 Verbosity => $params{Verbosity} || $$self{Verbosity},
96 %{$$self{ProviderParams}},
97 )
98
99}
100
101