Profile of FileHandle.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:05 2012

Filename | /home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/FileHandle.pm
Statements | Executed 74 statements in 2.47ms

Subroutines
Calls | P | F | Exclusive Time | Inclusive Time | Subroutine
--- | --- | --- | --- | --- | ---
1 | 1 | 1 | 96µs | 96µs | FileHandle::::BEGIN@3FileHandle::BEGIN@3
1 | 1 | 1 | 70µs | 2.43ms | FileHandle::::importFileHandle::import
1 | 1 | 1 | 51µs | 69µs | FileHandle::::BEGIN@4FileHandle::BEGIN@4
1 | 1 | 1 | 30µs | 83µs | FileHandle::::BEGIN@46FileHandle::BEGIN@46
0 | 0 | 0 | 0s | 0s | FileHandle::::pipeFileHandle::pipe

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

Line | State ments | Time on line | Calls | Time in subs | Code
--- | --- | --- | --- | --- | ---
1 |  |  |  |  | package FileHandle;
2 |  |  |  |  |
3 | 2 | 209µs | 1 | 96µs | # spent 96µs within FileHandle::BEGIN@3 which was called: # once (96µs+0s) by Config::General::BEGIN@20 at line 3 use 5.006; # spent 96µs making 1 call to FileHandle::BEGIN@3
4 | 2 | 595µs | 2 | 86µs | # spent 69µs (51+17) within FileHandle::BEGIN@4 which was called: # once (51µs+17µs) by Config::General::BEGIN@20 at line 4 use strict; # spent 69µs making 1 call to FileHandle::BEGIN@4 # spent 17µs making 1 call to strict::import
5 | 1 | 2µs |  |  | our($VERSION, @ISA, @EXPORT, @EXPORT_OK);
6 |  |  |  |  |
7 | 1 | 3µs |  |  | $VERSION = "2.02";
8 |  |  |  |  |
9 | 1 | 2µs |  |  | require IO::File;
10 | 1 | 36µs |  |  | @ISA = qw(IO::File);
11 |  |  |  |  |
12 | 1 | 6µs |  |  | @EXPORT = qw(_IOFBF _IOLBF _IONBF);
13 |  |  |  |  |
14 | 1 | 14µs |  |  | @EXPORT_OK = qw(
15 |  |  |  |  | pipe
16 |  |  |  |  |
17 |  |  |  |  | autoflush
18 |  |  |  |  | output_field_separator
19 |  |  |  |  | output_record_separator
20 |  |  |  |  | input_record_separator
21 |  |  |  |  | input_line_number
22 |  |  |  |  | format_page_number
23 |  |  |  |  | format_lines_per_page
24 |  |  |  |  | format_lines_left
25 |  |  |  |  | format_name
26 |  |  |  |  | format_top_name
27 |  |  |  |  | format_line_break_characters
28 |  |  |  |  | format_formfeed
29 |  |  |  |  |
30 |  |  |  |  | print
31 |  |  |  |  | printf
32 |  |  |  |  | getline
33 |  |  |  |  | getlines
34 |  |  |  |  | );
35 |  |  |  |  |
36 |  |  |  |  | #
37 |  |  |  |  | # Everything we're willing to export, we must first import.
38 |  |  |  |  | #
39 | 1 | 66µs | 1 | 688µs | import IO::Handle grep { !defined(&$_) } @EXPORT, @EXPORT_OK; # spent 688µs making 1 call to Exporter::import
40 |  |  |  |  |
41 |  |  |  |  | #
42 |  |  |  |  | # Some people call "FileHandle::function", so all the functions
43 |  |  |  |  | # that were in the old FileHandle class must be imported, too.
44 |  |  |  |  | #
45 |  |  |  |  | {
46 | 3 | 1.11ms | 2 | 137µs | # spent 83µs (30+54) within FileHandle::BEGIN@46 which was called: # once (30µs+54µs) by Config::General::BEGIN@20 at line 46 no strict 'refs'; # spent 83µs making 1 call to FileHandle::BEGIN@46 # spent 54µs making 1 call to strict::unimport
47 |  |  |  |  |
48 | 2 | 38µs |  |  | my %import = (
49 |  |  |  |  | 'IO::Handle' =>
50 |  |  |  |  | [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets
51 |  |  |  |  | eof flush error clearerr setbuf setvbuf _open_mode_string)],
52 |  |  |  |  | 'IO::Seekable' =>
53 |  |  |  |  | [qw(seek tell getpos setpos)],
54 |  |  |  |  | 'IO::File' =>
55 |  |  |  |  | [qw(new new_tmpfile open)]
56 |  |  |  |  | );
57 |  |  |  |  | for my $pkg (keys %import) {
58 | 3 | 14µs |  |  | for my $func (@{$import{$pkg}}) {
59 | 44 | 259µs |  |  | my $c = *{"${pkg}::$func"}{CODE}
60 |  |  |  |  | or die "${pkg}::$func missing";
61 |  |  |  |  | *$func = $c;
62 |  |  |  |  | }
63 |  |  |  |  | }
64 |  |  |  |  | }
65 |  |  |  |  |
66 |  |  |  |  | #
67 |  |  |  |  | # Specialized importer for Fcntl magic.
68 |  |  |  |  | #
69 |  |  |  |  | # spent 2.43ms (70µs+2.36) within FileHandle::import which was called: # once (70µs+2.36ms) by Config::General::BEGIN@20 at line 20 of Config/General.pm sub import {
70 | 5 | 31µs |  |  | my $pkg = shift;
71 |  |  |  |  | my $callpkg = caller;
72 |  |  |  |  | require Exporter;
73 |  |  | 1 | 72µs | Exporter::export($pkg, $callpkg, @_); # spent 72µs making 1 call to Exporter::export
74 |  |  |  |  |
75 |  |  |  |  | #
76 |  |  |  |  | # If the Fcntl extension is available,
77 |  |  |  |  | # export its constants.
78 |  |  |  |  | #
79 | 2 | 9µs |  |  | eval {
80 |  |  |  |  | require Fcntl;
81 |  |  | 1 | 45µs | Exporter::export('Fcntl', $callpkg); # spent 45µs making 1 call to Exporter::export
82 |  |  |  |  | };
83 |  |  |  |  | }
84 |  |  |  |  |
85 |  |  |  |  | ################################################
86 |  |  |  |  | # This is the only exported function we define;
87 |  |  |  |  | # the rest come from other classes.
88 |  |  |  |  | #
89 |  |  |  |  |
90 |  |  |  |  | sub pipe {
91 |  |  |  |  | my $r = new IO::Handle;
92 |  |  |  |  | my $w = new IO::Handle;
93 |  |  |  |  | CORE::pipe($r, $w) or return undef;
94 |  |  |  |  | ($r, $w);
95 |  |  |  |  | }
96 |  |  |  |  |
97 |  |  |  |  | # Rebless standard file handles
98 | 1 | 4µs |  |  | bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle";
99 | 1 | 2µs |  |  | bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle";
100 | 1 | 2µs |  |  | bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle";
101 |  |  |  |  |
102 | 1 | 75µs |  |  | 1;
103 |  |  |  |  |
104 |  |  |  |  | __END__