Lisp, Optimierung ...



  • Weiss jemand Literatur, oder Links, zur Optimierung von
    Lisp Programmen ?



  • Was meinst du mit Optimierung? Ich selbst arbeite mit Scheme und wenn man den Paradigmen folgt, so braucht man keine Optimierung. Aber man muss halt vorsichtig sein, z.B. kann man leicht fuer das Umkehren einer Liste einen quadratischen Algorithmus implementieren, obwohl eigentlich ein linearer moeglich als auch wuenschenswert ist. Dann gibt es noch den Unterschied zwischen iterative Algorithmen und rekursive (beide ueber Rekursion als Ausdrucksmittel zu erhalten). Scheme muss zum Beispiel tail call/tail transfer (bei iterativen Algorithmen) unterstuetzen und ist auch der bevorzugte Weg von mir, sofern die Implementation nicht unnoetig verkompliziert wird. Lisp muss nicht zwingend tail calls unterstuetzen. Auch bieten auch rein funktionale Methoden mehr Moeglichkeiten fuer den Kompiler/Interpreter, diesen durch Aequivalenzumformungen in effektiveren Code umzuwandeln. Falls es immer noch nicht reicht, bietet jedes System meist auch einen List->C (Scheme->C) Kompiler an. Auch kann direkt nativer Coder erzeugt werden. Stalin ist fuer Scheme ein herausragendes Beispiel, habe ihn aber selbst noch nicht getestet.



  • knivil: Dass man Lisp-Programme nicht optimieren muss, halte ich für ein Gerücht. Bestenfalls. 🙂

    GeorgC++ schrieb:

    Weiss jemand Literatur, oder Links, zur Optimierung von
    Lisp Programmen ?

    Das hier ist ein Klassiker und geht immer wieder auf Optimierungs-Themen ein, schau da evtl. mal in der Bibliothek Deines Vertrauens oder bei Google-Books (falls verfügbar) rein:
    Paradigms of Artificial Intelligence Programming | ISBN: 1558601910



  • nman schrieb:

    knivil: Dass man Lisp-Programme nicht optimieren muss, halte ich für ein Gerücht. Bestenfalls.

    Ich habe mit "Wenn ... ,dann ..." argumentiert. Auch habe ich Ansaetze fuer eine bessere Programmgestalltung geliefert. Wenn das nicht reicht, so verrate mir: Was willst du noch optimieren?



  • Vermeidung von Garbage zum Beispiel.
    Benutzen destruktiver Funktionen.

    Wobei das auch kontraproduktiv sein kann.


Anmelden zum Antworten