Szukaj…


Abstrakcyjna maszyna

Aby zwiększyć wydajność, kod Prolog jest zwykle kompilowany do abstrakcyjnego kodu maszynowego przed jego uruchomieniem.

Zaproponowano wiele różnych abstrakcyjnych architektur maszyn i wariantów w celu wydajnego wykonywania programów Prolog. Obejmują one:

  • WAM , Warren Abstract Machine
  • TOAM , abstrakcyjna maszyna używana w B-Prologu.
  • ZIP , używany na przykład jako podstawa maszyny wirtualnej SWI-Prolog
  • VAM , architektura badawcza opracowana w Wiedniu.

Indeksowanie

Wszystkie powszechnie używane interpretery Prolog używają indeksowania argumentów, aby skutecznie wybierać odpowiednie klauzule.

Użytkownicy mogą zazwyczaj polegać na przynajmniej pierwszym indeksowaniu argumentów , co oznacza, że zdania mogą być skutecznie rozróżniane przez funktor i aranżację najbardziej zewnętrznego terminu pierwszego argumentu. W wywołaniach, w których ten argument jest wystarczająco utworzony, klauzule dopasowania można zasadniczo wybierać w stałym czasie za pomocą skrótu tego argumentu.

Niedawno indeksowanie JIT zostało zaimplementowane w większej liczbie systemów, umożliwiając dynamiczne indeksowanie dowolnego argumentu, który jest wystarczająco instancyjny po wywołaniu predykatu.

Optymalizacja wezwania ogona

Praktycznie wszystkie systemy Prolog wdrażają optymalizację ogona (TCO). Oznacza to, że wywołania predykatów znajdujące się w pozycji końcowej mogą być wykonywane w stałej przestrzeni stosu, jeśli predykat jest deterministyczny.

Optymalizacja rekurencji ogona (TRO) jest szczególnym przypadkiem optymalizacji wywołania ogona.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow