Thread Schleifengeschwindigkeit (20 answers)
Opened by RPerl at 2009-05-30 17:02

RPerl
 2009-05-30 19:33
#122103 #122103
User since
2006-11-26
384 Artikel
BenutzerIn

user image
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
2
     block: 76 wallclock secs (74.97 usr +  0.08 sys = 75.05 CPU) @ 13.32/s (n=1000)
ohne block: 75 wallclock secs (74.97 usr + 0.06 sys = 75.03 CPU) @ 13.33/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)

View full thread Schleifengeschwindigkeit