Jemand zu Hause?
Devel::Size ist nur für Hashes, Arrays und Skalare. Hinter XML::LibXML liegt C-Stuff. Die Meinungen bisher besagen, dass das nicht geht. Ist das richtig? Ggf. warum kann ich den Speicherverbrauch in Bytes für das DOM-Objekt xy nicht anzeigen lassen?
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.
GTop seh ich auch keine Möglichkeit etwas anderes zu übergeben als eine PID. Ok, wie man über folgendes grep sieht kann man auch etwas anderes übergeben, aber das hat nichts mit der Frage zu tun.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
use strict; use warnings;