Devel::Size - Wieviel Speicher belegt meine Datenstruktur?

Veröffentlicht von Thomas Fahle am (Permalink)

Das CPAN-Modul Devel::Size beantwortet die Frage nach dem Speicherverbrauch (RAM) einer Perl-Datenstruktur.

Devel::Size exportiert zwei Funktionen: size() und total_size().

size() ermittelt die Größe der Datenstruktur in Bytes ohne den Inhalt der Datenstruktur.

total_size() ermittelt die Größe der Datenstruktur in Bytes unter Berücksichtigung des Inhalts der Datenstruktur.

Beide Funktionen erwarten eine Referenz (\) auf die Datenstruktur als Parameter.

Beispiel:

#!/usr/bin/perl 
use strict;
use warnings;

use Devel::Size qw(size total_size);

my $string = '1234567890';

print 'Size string:      ' , size(\$string)       ,"\n"; 
print 'TotalSize string: ' , total_size(\$string) , "\n"; 
print "\n";

my @array = qw( 1 2 3 4 5 6 7 8 9 0);

print 'Size array:       ' , size(\@array)       , "\n"; 
print 'TotalSize array:  ' , total_size(\@array) , "\n"; 
print "\n";

my %hash = ( 1 => 1, 2 => 2, 3 => 3,
             4 => 4, 5 => 5, 6 => 6,
             7 => 7, 8 => 8, 9 => 9, 0 => 0);

print 'Size hash:        ' , size(\%hash)       , "\n"; 
print 'TotalSize hash:   ' , total_size(\%hash) , "\n"; 
print "\n";

      # Array of Arrays
my @AoA = (
        [ "fred", "barney" ],
        [ "george", "jane", "elroy" ],
        [ "homer", "marge", "bart" ],
      );

print 'Size AoA:         ' , size(\@AoA)       , "\n"; 
print 'TotalSize AoA:    ' , total_size(\@AoA) , "\n"; 

Das Programm erzeugt folgende Ausgabe:

Size string:      36
TotalSize string: 36

Size array:       96
TotalSize array:  376

Size hash:        354
TotalSize hash:   514

Size AoA:         72
TotalSize AoA:    576

Siehe auch

Weitere Posts