Recherche…


Machine abstraite

Pour plus d'efficacité, le code Prolog est généralement compilé en code machine abstrait avant son exécution.

De nombreuses architectures et variantes de machines abstraites ont été proposées pour une exécution efficace des programmes Prolog. Ceux-ci inclus:

  • WAM , la machine abstraite de Warren
  • TOAM , une machine abstraite utilisée dans B-Prolog.
  • ZIP , utilisé par exemple comme base de la VM de SWI-Prolog
  • VAM , une architecture de recherche développée à Vienne.

Indexage

Tous les interpréteurs Prolog largement utilisés utilisent l’ indexation des arguments pour sélectionner efficacement les clauses appropriées.

Les utilisateurs peuvent généralement compter sur au moins un premier argument d'indexation , ce qui signifie que les clauses peuvent être efficacement différenciées par le foncteur et l'arité du terme le plus externe du premier argument. Dans les appels où cet argument est suffisamment instancié, les clauses d'appariement peuvent essentiellement être sélectionnées en temps constant via un hachage sur cet argument.

Plus récemment, l’ indexation JIT a été implémentée dans plus de systèmes, permettant l’indexation dynamique sur tout argument suffisamment instancié lors de l’appel du prédicat.

Optimisation des appels de queue

Pratiquement tous les systèmes Prolog implémentent l' optimisation des appels de queue (TCO). Cela signifie que les appels de prédicats qui sont dans une position de queue peuvent être exécutés dans un espace de pile constant si le prédicat est déterministe.

L'optimisation de la récursion de la queue (TRO) est un cas particulier d'optimisation des appels de queue.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow