Thread Hash als Option missbrauchen (118 answers)
Opened by bloonix at 2005-12-19 02:24

bloonix
 2005-12-22 21:18
#61030 #61030
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pq,22.12.2005, 12:25]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  
        ( $net{$2}{NetRxBytes}
        , $net{$2}{NetRxPackets}
        , $net{$2}{NetRxErrs}
        , $net{$2}{NetRxDrop}
        , $net{$2}{NetRxFifo}
        , $net{$2}{NetRxFrame}
        , $net{$2}{NetRxCompr}
        , $net{$2}{NetRxMulti}
        , $net{$2}{NetTxBytes}
        , $net{$2}{NetTxPacktes}
        , $net{$2}{NetTxErrs}
        , $net{$2}{NetTxDrop}
        , $net{$2}{NetTxFifo}
        , $net{$2}{NetTxColls}
        , $net{$2}{NetTxCarr}
        , $net{$2}{NetTxCompr}
        ) = split /\s+/, $4;

ist wirklich unschön.[/quote]

Über die Schematik meines Codestils lasse ich immer gerne mit mir
verhandeln. Aber der Eine findet _das_ schön, ein Anderer _dies_ und
wieder ein Anderer _sowas_ ... wem soll ich es recht machen? :(

Am besten mir :)

[quote=pq,22.12.2005, 12:25]
davon hast du noch mehr im modul.
das ist, nebenbei, auch ineffizient.[/quote]

Du hast recht.

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/perl -w
use strict;
use Benchmark;

my @array = ( 'Inter-|   Receive                                                |  Transmit'
           , ' face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed'
           , '    lo:    7897     101    0    0    0     0          0         0     7897     101    0    0    0     0       0          0'
           , '  sit0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0'
           , '  eth0:  928792    1249    0    0    0     0          0         0   261023    1281    0    0    0     0       0          0'
           , '  dsl0:  899950    1215    0    0    0     0          0         0   226997    1169    0    0    0     0       0          0'
           );

my (%net,%sum);

Benchmark::cmpthese(-1, {
  '%net' => sub { for (@array) {
                     if (/^(\s+|)(\w+):(\s+|)(.*)/) {
                        ( $net{$2}{NetRxBytes}
                        , $net{$2}{NetRxPackets}
                        , $net{$2}{NetRxErrs}
                        , $net{$2}{NetRxDrop}
                        , $net{$2}{NetRxFifo}
                        , $net{$2}{NetRxFrame}
                        , $net{$2}{NetRxCompr}
                        , $net{$2}{NetRxMulti}
                        , $net{$2}{NetTxBytes}
                        , $net{$2}{NetTxPacktes}
                        , $net{$2}{NetTxErrs}
                        , $net{$2}{NetTxDrop}
                        , $net{$2}{NetTxFifo}
                        , $net{$2}{NetTxColls}
                        , $net{$2}{NetTxCarr}
                        , $net{$2}{NetTxCompr}
                        ) = split /\s+/, $4;

                        $sum{NetRxBytes} += $net{$2}{NetRxBytes};
                        $sum{NetTxBytes} += $net{$2}{NetTxBytes};
                     }
                  }
            },
  '@net' => sub { for (@array) {
                     if (/^(\s+|)(\w+):(\s+|)(.*)/) {
                        @{$net{$2}}{qw(
                           NetRxBytes NetRxPackets NetRxErrs NetRxDrop NetRxFifo NetRxFrame
                           NetRxCompr NetRxMulti NetTxBytes NetTxPacktes NetTxErrs NetTxDrop
                           NetTxFifo NetTxColls NetTxCarr NetTxCompr
                        )} = split /\s+/, $4;

                        $sum{NetRxBytes} += $net{$2}{NetRxBytes};
                        $sum{NetTxBytes} += $net{$2}{NetTxBytes};
                     }
                  }
            },
});

      Rate %net @net
%net 3199/s   -- -22%
@net 4110/s  28%   --

      Rate %net @net
%net 3349/s   -- -17%
@net 4036/s  21%   --

      Rate %net @net
%net 3412/s   -- -18%
@net 4148/s  22%   --


Ca. 800 Iterations mehr. Das ist im Vergleich nicht wenig.

Greez,
opi
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Hash als Option missbrauchen