Du sollst perl ueberhaupt nicht optimieren; wenn du dennoch optimieren musst, optimiere spaeter :-))
das will eigentlich darauf hinaus, dass man so spaet wie moeglich zu optimieren anfangen soll, und zwar vom code her. Die Optimierung bezueglich der Algorithmen faellt da nicht rein, die kann man schon recht frueh machen (weil die eh normalerweise mehr bringt). Eine zu fruehe Optimierung der Programmiersprache geht naemlich meistens auf die Lesbarkeit, und somit auf die Wartbarkeit, und kostet im Endeffekt nur unnoetig Entwicklungszeit. Erst wenn das Programm von der Logik her alles perfekt macht, kann man, wenn noetig, mit der optimierung beginnen. Und wie?
Laufzeit:
1. die Stellen herausfinden, an denen sich eine Optimierung ueberhaupt lohnt (z.B. mit
Devel::DProf. wenn eine Funktion nur einmal aufgerufen wird, lohnt sich da meistens ein Geschwindigkeitsgewinn von 50% nicht (ausser die Funktion braucht extrem lange). Wenn eine Funktion jedoch eine Million mal aufgerufen wird, lohnt sich haeufig sogar ein Gewinn von 1%.
2. Wenn man die Stellen lokalisiert hat, die sich auszahlen wuerden, kann man versuchen, da schnelleren Code zu produzieren, indem man bessere Kommandos verwendet (z.B. mit
Benchmark ueberpruefen, ob er wirklich schneller ist (und dabei moeglichst wirklichkeitsnahe Daten verwenden, weil sonst der Benchmark nicht aussagekraeftig ist), oder Code nach C auslagert und einbindet
RAM:
Mehr RAM kaufen ist meistens billiger als Entwicklungszeit. Dabei sollte man jedoch darauf achten, dass bei den gaengigen 32-Bit-Betriebssysteme nur maximal 2GB RAM fuer Perl zur Verfuegung stehen, die durch die Speicherfragmentierung haeufig auf 1,4 GB oder so beschraenkt werden (=Out of Memory-Error bei Ueberschreitung). Deshalb gibt es da mehrere Wege, RAM zu sparen:
1. gegen die Speicherfragmentierung zu kaempfen: z.B. grosse Listen/Hashes schon zu presizen ($#liste = 100000)
2. gegen den Speicherbedarf selbst kaempfen: bessere Datenstrukturen verwenden, nur das in den Speicher laden, was benoetigt wird (geht meistens auf Kosten der Laufzeit), andere programmiersprache (geht meistens auf Kosten der Wartbarkeit und Entwicklungszeit)