On the Performance of Bytecode Interpreters in Prolog
Philipp K\"orner, David Schneider, Michael Leuschel

TL;DR
This paper compares the performance of AST and bytecode interpreters in Prolog, evaluating different control flow techniques to determine the most efficient design for simple and complex languages.
Contribution
It presents various implementations of interpreters in Prolog and assesses their efficiency, applying techniques from imperative languages to Prolog.
Findings
Bytecode interpreters can be more efficient than AST interpreters in Prolog.
Control flow techniques from imperative languages can be adapted to Prolog interpreters.
The study provides insights for designing efficient interpreters in Prolog for complex languages.
Abstract
The semantics and the recursive execution model of Prolog make it very natural to express language interpreters in form of AST (Abstract Syntax Tree) interpreters where the execution follows the tree representation of a program. An alternative implementation technique is that of bytecode interpreters. These interpreters transform the program into a compact and linear representation before evaluating it and are generally considered to be faster and to make better use of resources. In this paper, we discuss different ways to express the control flow of interpreters in Prolog and present several implementations of AST and bytecode interpreters. On a simple language designed for this purpose, we evaluate whether techniques best known from imperative languages are applicable in Prolog and how well they perform. Our ultimate goal is to assess which interpreter design in Prolog is the most…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
