Sök…


Abstrakt maskin

För effektivitet komponeras Prolog-koden vanligtvis till abstrakt maskinkod innan den körs.

Många olika abstrakta maskinarkitekturer och varianter har föreslagits för effektivt genomförande av Prolog-program. Dessa inkluderar:

  • WAM , Warren Abstract Machine
  • TOAM , en abstrakt maskin som används i B-Prolog.
  • ZIP , som till exempel används som bas för SWI-Prolog VM
  • VAM , en forskningsarkitektur som utvecklats i Wien.

indexering

Alla allmänt använda Prolog-tolkar använder argumentindexering för att effektivt välja lämpliga klausuler.

Användare kan vanligtvis lita på åtminstone första argumentindexering , vilket innebär att klausuler effektivt kan delas isär av funktorn och arity av den yttersta termen i det första argumentet. I samtal där detta argument är tillräckligt instanserade kan matchningsklausuler väsentligen väljas i konstant tid via hashing på det argumentet.

På senare tid har JIT-indexering implementerats i fler system, vilket möjliggör dynamisk indexering på alla argument som är tillräckligt instanserade när predikatet kallas.

Optimering av svanssamtal

Praktiskt taget alla Prolog-system implementerar tail call optimization (TCO). Detta innebär att predikattsamtal som är i svansposition kan utföras i konstant stackutrymme om predikatet är deterministiskt.

TRO- rekursionsoptimering (TRO) är ett speciellt fall för optimering av svanssamtal.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow