Speicherauslastung eines Programms loggen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Speicherauslastung eines Programms loggen

Beitrag von roli » 23.11.2007 10:50:21

Hi,

ich habe ein Perl Programm geschrieben, bzw. bin noch drann, bei dem ich jetzt so langsam dazu komme, die Dinge die jetzt so laufen wie ich es gerne haette zu optimieren. Da mein Script u.U. auch mit grossen Datenmengen (ich hab's mal mit 2 Eingabedateien a 170MB getestet) zurecht kommen muss, wuerde ich gerne mal mitloggen, wie der Speicherverbrauch meines Scriptes ist. Erstmal wuerde mir ausreichen wenn ich den "Spitzenverbrauch" angezeigt bekommen wuerde. Ich gehe halt davon aus, das eine neue Funktion die ich die Tage eingebaut habe sich sehr nachteilig auf den Speicherverbrauch auswirkt. Wenn natuerlich jemand eine Idee hat, wie ich den Verbrauch auf einelne Funktionen/Befehle meines Perl Scriptes runterbrechen koennte, um so schoener.

Danke
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
Six
Beiträge: 8069
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Beitrag von Six » 23.11.2007 13:01:57

Ich habe außer einem 2-stündigen Theorieseminar exakt keine Erfahrung mit Perl, aber nach einen kurzen Blick in die Unterlagen kann ich sagen, daß es Devel::DProf gibt, was die üblichen Profiling-Aufgaben erfüllt, d. h. Laufzeit- und Speicherkomplexität verfolgt. Da ich gute Erfahrungen mit anderen Profilern (hmh, eigentlich nur Haskells...) gemacht habe, könnte das vielleicht helfen ;)
Be seeing you!

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 23.11.2007 13:45:44

Hi six,

die Laufzeit monitore ich bereits so, da wird schoen nach Funktion aufgeschluesselt wie oft sie aufgreufen wurde, und wieviel Zeit dafuer draufgegangen ist. Was Laufzeit angeht, habe ich mit dem Wissen wo die Zeit verballert wird, schon betraechtlichen steigerungen erreicht. Aber ich sehe da nix bezueglich der Speicherauslastung:

Code: Alles auswählen

Total Elapsed Time = 0.117460 Seconds
  User+System Time = 0.117460 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
 40.0   0.047  0.047      6   0.0078 0.0078  main::BEGIN
 13.6   0.016  0.016      2   0.0080 0.0080  main::trim_delete_space
 12.7   0.015  0.015      2   0.0075 0.0075  main::read_csv
 10.2   0.012  0.010   1000   0.0000 0.0000  main::cmp_data
 0.00   0.000  0.000      2   0.0000 0.0000  Exporter::Heavy::heavy_export
 0.00       - -0.000      1        -      -  Exporter::Heavy::_rebuild_cache
 0.00       - -0.000      1        -      -  Config::TIEHASH
 0.00       - -0.000      1        -      -  Config::import
 0.00       - -0.000      1        -      -  warnings::BEGIN
 0.00       - -0.000      1        -      -  warnings::import
 0.00       - -0.000      1        -      -  bytes::import
 0.00       - -0.000      1        -      -  Data::Dumper::bootstrap
 0.00       - -0.000      1        -      -  Getopt::Std::getopts
 0.00       - -0.000      2        -      -  DynaLoader::dl_undef_symbols
 0.00       - -0.000      2        -      -  DynaLoader::dl_install_xsub
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Antworten