Prolog Language
Prestanda
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.