![]() |
|< 1 2 3 4 5 6 7 >| | ![]() |
65 Einträge, 7 Seiten |
1
2
3
4
5
6
7
8
9
10
use Fcntl qw(:flock :seek);
open my $fh, "+<", "datei" or die $!;
flock $fh, LOCK_EX;
seek $fh, 0, SEEK_SET;
chomp(my $count = <$fh>);
$count++;
seek $fh, 0, SEEK_SET;
truncate $fh, 0;
print $fh "$count\n";
close $fh;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ perl -we 'use Benchmark;
use strict;
use Fcntl;
timethese(
5000000,
{
sysopen => sub {
sysopen( my $F, "datei", O_WRONLY ) or die $!
},
open => sub {
open( my $F, ">datei" ) or die $!
}
}
)'
Benchmark: timing 5000000 iterations of open, sysopen...
open: 57 wallclock secs (40.82 usr + 16.47 sys = 57.29 CPU) @ 87275.27/s (n=5000000)
sysopen: 54 wallclock secs (39.85 usr + 13.77 sys = 53.62 CPU) @ 93248.79/s (n=5000000)
1
2
3
4
5
6
7
$ perl -v
This is perl, v5.8.7 built for i386-linux
Copyright [...]
$ uname -a
Linux cyan 2.6.17-rc1 #1 PREEMPT Thu Apr 13 02:24:34 CEST 2006 i686 Intel(R) Pentium(R) M processor 2.00GHz GenuineIntel GNU/Linux
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
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw/cmpthese/;
use Fcntl;
cmpthese (-5,
{
open => sub {
open FILE, ">", "open_vs_sysopen.tst" or die $!;
close FILE;
},
sysopen => sub {
sysopen FILE, "open_vs_sysopen.tst", O_CREAT|O_WRONLY or die $!;
close FILE;
},
}
);
__END__
Rate open sysopen
open 58073/s -- -29%
sysopen 81322/s 40% --
$ perl -v
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
1
2
3
4
$ perl -we 'use Benchmark; use strict; use Fcntl; timethese(5000000,{sysopen=>sub{sysopen(my $F, "datei", O_WRONLY) or die $!}, open => sub {open(my $F, ">datei") or die $!}})'
Benchmark: timing 5000000 iterations of open, sysopen...
open: 124 wallclock secs (53.82 usr + 62.77 sys = 116.59 CPU) @ 42885.32/s (n=5000000)
sysopen: 84 wallclock secs (51.25 usr + 28.48 sys = 79.73 CPU) @ 62711.65/s (n=5000000)
1
2
3
4
5
6
7
8
Rate sysopen open
sysopen 12801/s -- -3%
open 13188/s 3% --
perl5.8.8 -v
This is perl, v5.8.8 built for i386-freebsd
(with 1 registered patch, see perl -V for more detail)
1
2
3
4
5
6
7
Rate open sysopen
open 7566/s -- -2%
sysopen 7706/s 2% --
perl5.8.7t -v
This is perl, v5.8.7 built for i386-freebsd-thread-multi
1
2
3
4
5
| ext3 | tmpfs
=======================================================
open | 70 | 58
sysopen (O_WRONLY) | 54 | 54
sysopen (O_WRONLY|O_CREAT|O_TRUNC) | 80 | 65
![]() |
|< 1 2 3 4 5 6 7 >| | ![]() |
65 Einträge, 7 Seiten |