Thread Schleifengeschwindigkeit
(20 answers)
Opened by RPerl at 2009-05-30 17:02
Hallo bloonix,
Vielen Dank fuer deinen Rat! Ich hab den Code nun umgeschrieben: Code (perl): (dl
)
push @ips, $ip->{ip} while ++$ip; Nun spare ich den Aufruf auf die ip() methode vom package. Benchmark folgt. //EDIT: Ergebnis: Code: (dl
)
1 block: 76 wallclock secs (74.97 usr + 0.08 sys = 75.05 CPU) @ 13.32/s (n=1000) Code den ich benutze: Code (perl): (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 #!/usr/bin/perl use Net::IP; use Benchmark qw/:all/; my $result = timethese( 1000, { 'block' => sub { my $ip = new Net::IP('217.229.0.134 - 217.229.0.150') or die; my @ips = (); while ($ip) { push @ips, $ip->ip(); ++$ip; } }, 'ohne block' => sub { my $ip = new Net::IP('217.229.0.134 - 217.229.0.150') or die; my @ips = (); push @ips, $ip->{'ip'} while ++$ip; }, } ); Minimal schneller. // EDIT2: Mir ist bewusst das 1000 kein besonders guter Wert ist, aber ich wollte schneller ein Ergebnis posten. Last edited: 2009-05-30 19:52:56 +0200 (CEST) |