Suche…


Abstrakte Maschine

Aus Effizienzgründen wird Prolog-Code normalerweise zu abstraktem Maschinencode kompiliert, bevor er ausgeführt wird.

Für die effiziente Ausführung von Prolog-Programmen wurden viele verschiedene abstrakte Maschinenarchitekturen und -varianten vorgeschlagen. Diese schließen ein:

  • WAM , die Warren Abstract Machine
  • TOAM , eine abstrakte Maschine, die in B-Prolog verwendet wird.
  • ZIP , zum Beispiel als Basis für die VM von SWI-Prolog
  • VAM , eine in Wien entwickelte Forschungsarchitektur.

Indizierung

Alle weit verbreiteten Prolog-Interpreter verwenden Argumentindexierung , um geeignete Klauseln effizient auszuwählen.

Benutzer können sich in der Regel auf die Indizierung des ersten ersten Arguments verlassen , was bedeutet, dass die Klauseln effizient durch den Functor und die Arity des äußersten Begriffs des ersten Arguments unterschieden werden können. In Aufrufen, bei denen dieses Argument ausreichend instanziiert ist, können Übereinstimmungsklauseln im Wesentlichen in konstanter Zeit über das Hashing dieses Arguments ausgewählt werden.

In jüngerer Zeit wurde die JIT-Indizierung in mehr Systemen implementiert, um eine dynamische Indizierung für jedes Argument zu ermöglichen, das beim Aufruf des Prädikats ausreichend instanziiert wird.

Rückrufoptimierung

Nahezu alle Prolog-Systeme implementieren Tail Call-Optimierung (TCO). Dies bedeutet, dass Prädikataufrufe, die sich in einer Endposition befinden, im konstanten Stapelspeicherbereich ausgeführt werden können, wenn das Prädikat deterministisch ist.

Die Tail Recursion Optimization (TRO) ist ein Spezialfall der Tail Call-Optimierung.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow