Thread Benchmark für Ausgabe einer (kleinen) Datei: Wens interessiert... (1 answers)
Opened by format_c at 2005-02-18 00:52

format_c
 2005-02-18 00:52
#51875 #51875
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Das Script:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
use strict;
use Benchmark;

sub test1 {
open FILE,'<',$0 or die $!;
local $/;
print STDERR <FILE>;
close FILE;
}

sub test2 {
open FILE,'<',$0 or die $!;
while (<FILE>) {
print STDERR $_;
}
close FILE;
}

sub test3 {
open my $fh,'<',$0 or die $!;
local $/;
print STDERR <$fh>;
close $fh;
}

sub test4 {
open my $fh,'<',$0 or die $!;
while (<$fh>) {
print STDERR $_;
}
close FILE;
}
###############################################

sub test5 {
require IO::File;
my $fh = IO::File->new($0,'r') or die $!;
print STDERR <$fh>;
$fh->close();
}

timethese(1_000_000,{
'Mit "open FILE" und ohne "while"' => \&test1,
'Mit "open FILE" und mit "while"' => \&test2,
'Mit "open $fh" und ohne "while"' => \&test3,
'Mit "open $fh" und mit "while"' => \&test4,
'Mit "IO::File"' => \&test5
});

Ergebnis:
Code: (dl )
1
2
3
4
5
6
7
8
9
koeppea@foxi:~/perl_scripts> tail -f benchmark.txt
Benchmark: timing 1000000 iterations of Mit "IO::File", Mit "open $fh" und mit "while", Mit "open $fh" und ohne "while", Mit "open FILE" und mit "while", Mit "open FILE" und ohne "while"...
Mit "IO::File": 540 wallclock secs (456.56 usr + 76.48 sys = 533.04 CPU) @ 1876.03/s (n=1000000)
Mit "open $fh" und mit "while": 128 wallclock secs (97.60 usr + 29.50 sys = 127.10 CPU) @ 7867.82/s (n=1000000)
Mit "open $fh" und ohne "while": 45 wallclock secs (33.78 usr + 11.26 sys = 45.04 CPU) @ 22202.49/s (n=1000000)
Mit "open FILE" und mit "while": 114 wallclock secs (85.77 usr + 27.13 sys = 112.90 CPU) @ 8857.40/s (n=1000000)
Mit "open FILE" und ohne "while": 34 wallclock secs (22.93 usr + 10.84 sys = 33.77 CPU) @ 29612.08/s (n=1000000)

koeppea@foxi:~/perl_scripts>



OK Das Ergebnis mit IO::File würde wahrscheinlich besser ausfallen wenn mehr Dateien damit gelesen werden würden. Nur ich brauch das nur einmal pro Ausführung.

Gruß Alex

View full thread Benchmark für Ausgabe einer (kleinen) Datei: Wens interessiert...