CW 312

B. Demoen, P.-L. Nguyen
Odd Prolog benchmarking


In the course of developing hProlog - an alternative backend for HAL - we felt the need to check our implementation of certain features both for correctness and performance against other implementations. The first such feature was freeze/2 and later grew out in a set of benchmarking programs for catch\&throw, findall, global variables, meta call (and variants), arithmetic, if/3 and copy\_term. Some of these are not even ISO conforming, but they may be crucial for many applications. We discuss the problems in constructing benchmarks for such features, present the benchmark programs and the measurements in a number of relevant systems (B-Prolog, GNU Prolog, SICStus, Yap, hProlog, SWI-Prolog and ECLiPSe). Even though all these systems are (to some extent) WAM-based, we find huge differences and wherever we can, we try to explain them and/or indicate when an obvious explanation is wrong. As a side effect, we gain some insight in the overhead that ISO imposes.

report.pdf / mailto: B. Demoen