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.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.