2010-04-01T18:31:12 GwenDragonBeispielcode.
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
67
68
69
70
71
#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;
use Devel::Size qw/total_size/;
my $s1 = str1();
my $x1 = XML::LibXML->new();
my $p1 = $x1->parse_string($s1);
my $s2 = str2();
my $x2 = XML::LibXML->new();
my $p2 = $x2->parse_string($s2);
print 'Used Bytes: ', total_size($p1),"\n";
print 'Used Bytes: ', total_size($p2),"\n";
sub str1 {
return <<END;
<?xml version="1.0" ?>
<Kunden xmlns="xxx">
<Kunde id="45325">
<Name>Meier</Name>
<Vorname>Peter</Vorname>
<Umsatz>1423</Umsatz>
<Kaeufe>28</Kaeufe>
</Kunde>
<Kunde cc:id="45326" xmlns:cc="yyy">
<Name>Schmidt</Name>
<Vorname>Harald</Vorname>
<Umsatz>7421.00</Umsatz>
<Kaeufe>19</Kaeufe>
</Kunde>
</Kunden>
END
}
sub str2 {
return <<END;
<?xml version="1.0" ?>
<Kunden xmlns="xxx">
<Kunde id="45325">
<Name>Meier</Name>
<Vorname>Peter</Vorname>
<Umsatz>1423</Umsatz>
<Kaeufe>28</Kaeufe>
</Kunde>
<Kunde cc:id="45326" xmlns:cc="yyy">
<Name>Schmidt</Name>
<Vorname>Harald</Vorname>
<Umsatz>7421.00</Umsatz>
<Kaeufe>19</Kaeufe>
</Kunde>
<Kunde id="45325">
<Name>Meier</Name>
<Vorname>Peter</Vorname>
<Umsatz>1423</Umsatz>
<Kaeufe>28</Kaeufe>
</Kunde>
<Kunde cc:id="45326" xmlns:cc="yyy">
<Name>Schmidt</Name>
<Vorname>Harald</Vorname>
<Umsatz>7421.00</Umsatz>
<Kaeufe>19</Kaeufe>
</Kunde>
</Kunden>
END
}
2010-04-03T07:55:52 GwenDragonGTop misst aber nur den Speicherverbrauch des Prozesses.
1
2
3
4
5
6
7
8
9
10
11
$ grep -P '\(.+\)' gtop_docu
my $fsusage = $gtop->fsusage($disk);
my $mountlist = $gtop->mountlist($all_fs);
my $netload = $gtop->netload($interface);
my $proc_args = $gtop->proc_args($pid);
my $proc_map = $gtop->proc_map($pid);
my $proc_mem = $gtop->proc_mem($pid);
my $proc_segment = $gtop->proc_segment($pid);
my $proc_state = $gtop->proc_state($pid);
my $proc_time = $gtop->proc_time($pid);
my $proc_uid = $gtop->proc_uid($pid);
QuoteGing des dem Startposter nicht um die Größe der Objekte in XML::LibXML?
Quotewir übersehen was
Guest ҉Habt ihr überhaupt das Beispielprogramm gelesen?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use GTop ();
my $gtop = GTop->new;
my $m1 = $gtop->proc_mem($$)->size;
print $m1,"\n";
my $s1 = str1();
my $x1 = XML::LibXML->new();
my $p1 = $x1->parse_string($s1);
my $m2 = $gtop->proc_mem($$)->size;
print $m2,"\n";
my $s2 = str2();
my $x2 = XML::LibXML->new();
my $p2 = $x2->parse_string($s2);
my $m3 = $gtop->proc_mem($$)->size;
print $m3,"\n";
QuoteIch kann es nur noch einmal in Worten sagen: Größe des Objekts ist gleich Größe des Prozesses nach Erzeugung des Objekts minus Größe des Prozesses vor Erzeugung des Objekts.
Quotenichts für $p2,
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
# Belegung "anwärmen" my $gtop = GTop->new; my $x = XML::LibXML->new; $x->parse_string('<root/>'); my @attr = qw(size vsize resident share rss rss_rlim); say join "\t", map {substr $_, 0, 7} @attr; my (%before, %after); # kleinstmögliche Gültigkeitsbereiche, aber Berechnung im selben Bereich, # ansonsten +4 KiB unnützer Stack { $before{$_} = $gtop->proc_mem($$)->$_ for @attr; my $p1 = $x->parse_string($s1); $after{$_} = $gtop->proc_mem($$)->$_ for @attr; say join "\t", map {$after{$_} - $before{$_}} @attr; } { $before{$_} = $gtop->proc_mem($$)->$_ for @attr; my $p2 = $x->parse_string($s2); $after{$_} = $gtop->proc_mem($$)->$_ for @attr; say join "\t", map {$after{$_} - $before{$_}} @attr; } __END__ size vsize residen share rss rss_rli 0 0 57344 53248 57344 0 0 0 0 0 0 0