Thread Rekursiver Algorithmus zur Kombinatorik optimierbar?
(11 answers)
Opened by ariser at 2013-10-05 21:31 2013-10-06T17:40:32 ariser Perl ist eine interpretierte Sprache. Jedes Kommando das du schreibst repräsentiert eine ohne mehrere Funktionen in Perl. Da passieren viele Überprüfungen um alle Kontexte, in dem ein Befehl ausgeführt werden kann, korrekt zu behandeln. Gleiches geschieht bei Zugriffen auf Variablen. Grundsätzlich wird viel gemacht was in diesem speziellen Fall nicht nötig ist. Das macht Perl 50-100 mal langsamer als compilierter Code. Bei Funktionsaufrufen passiert fast alles im Kern von von perl, das ist hoch optimiert und läuft im nativen Maschinencode ab. Darum ist in dem Fall eine Rekursion günstiger. Werden aber große Datenmengen kopiert fällt das ins Gewicht, wie deine Variante zeigt. Das ist aber nur auf Interpreter bezogen. Bei compiliertem Code ist eine iterative Lösung meist schneller, da viele Prüfungen und kopieren von Werten weg fallen können, die bei Funktionsaufrufen gemacht werden. |