Schrift
[thread]7316[/thread]

Perl Performance: Tweak perl



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
frodus
 2005-10-04 18:29
#58485 #58485
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

ich habe gerade die undankbare aufgabe bekommen ein
Perl Programm zu optimieren, was über Jahre gewachsen ist.

Das Haupt Problem ist, dass es unmengen an Speicher
verbraucht.

Gibt es irgend eine geschickte Art, die Stellen in dem Program
zu lokalisieren, die den meisten Speicher verbrauchen?

Wie würdet Ihr da vorgehen?

Gruss,


Frodus
sri
 2005-10-04 19:25
#58486 #58486
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich benutze Valgrind und Devel::Size.
frodus
 2005-10-04 22:08
#58487 #58487
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Danke sri werde ich Morgen mal sofort testen. :-)
pq
 2005-10-04 23:41
#58488 #58488
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
auf jeden fall strict verwenden und variablen im innerst-möglichen scope deklarieren.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
frodus
 2005-10-05 11:57
#58489 #58489
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Hi pq,

use strict habe ich schon komplett nachgezogen.
Das mit dem inneren scope ist in Arbeit.

/Frodus
Taulmarill
 2005-10-05 14:05
#58490 #58490
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
hm, mal so ein bischen ins blaue geraten könnte ich mir vorstellen, dass du evtl. datenstrukturen kopierst oder eine datenstruktur zwar nur in einem engen scope hast, aber auserhalb davon noch eine referenz darauf existiert.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
frodus
 2005-10-05 15:36
#58491 #58491
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Ja das habe ich mir auch schon gedacht.
Das Problem ist halt solche Sachen zu finden :-(

Ich bin gerade dabei mit Devel::Size und dem guten alten Data::Dumper meine Strukturen zu untersuchen.
Relais
 2005-10-06 01:21
#58492 #58492
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du mehrere Datenstrukturen hast, die vielleicht später gebraucht werden, vielleicht aber auch nicht... und diese isolieren kannst, und im besten Fall auch noch nacheinander aufbauen, dann kannst du die serialisieren, sprich mit pack() zu einem String machen. Oder direkt mit dem Module CPAN:Storable in eine Datei rausschreiben, und ihren Speicher erstmal anderweitig wiederverwerten.

Ok, das ist selten so möglich, aber manchmal eben doch =)
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
frodus
 2005-10-06 15:49
#58493 #58493
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Danke Relais,

Ich habe glaube ich schon einen Ansatzpunkt gefunden der mir auf jeden Fall ein wenig
weiter hilft. Aber wenn das noch nicht reicht werde ich mir pack() und das CPAN module
mal näher anschauen.

Gruss,

Frodus
sri
 2005-10-06 15:59
#58494 #58494
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Relais,05.10.2005, 23:21]Wenn Du mehrere Datenstrukturen hast, die vielleicht später gebraucht werden, vielleicht aber auch nicht... und diese isolieren kannst, und im besten Fall auch noch nacheinander aufbauen, dann kannst du die serialisieren, sprich mit pack() zu einem String machen. Oder direkt mit dem Module CPAN:Storable in eine Datei rausschreiben, und ihren Speicher erstmal anderweitig wiederverwerten.

Ok, das ist selten so möglich, aber manchmal eben doch =)[/quote]
Wie macht man denn mit pack() eine Datenstruktur zu einem String?
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2005-10-04 18:29.