Thread flock funktioniert nicht (64 answers)
Opened by x-man at 2006-04-17 19:11

Dubu
 2006-04-19 01:15
#7381 #7381
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Hm. Interessant, ich hatte eher die Größenordnung wie bei master heraus.
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
#!/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

Ohne das close() ist der Unterschied sogar noch ein wenig größer, ohne das O_CREAT erst recht.

Ich habe auch mal deinen Code getestet, betterworld. Da sieht's genauso aus:
Code: (dl )
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)

Kommt wohl auch auf die Perl-Version/Plattform an.

View full thread flock funktioniert nicht