Devel::Size - Wieviel Speicher belegt meine Datenstruktur?

| | Kommentare (1)

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

1 Kommentare

Die Wahl der Datenstruktur beeinflußt den Speicherverbrauch enorm. Ein Skalar statt einem Array-of-Arrays benutzt nur 1/40 des Speicherplatzes (in diesem Fall 88 statt 3.512 Bytes).

Jetzt kommentieren

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Thomas Fahle vom 22.09.08 15:36.

Archive::Zip - Verzeichnisse und Dateien im Zip-Format packen und entpacken ist der vorherige Eintrag in diesem Blog.

Zahlen runden mit Math::Round ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Perl Suchmaschine

Blog Roll

Powered by Movable Type 4.1