Discussion SWI Prolog

In this section we will provide a critical discussion of the comparison with the SWI Prolog system. The SWI Prolog system is the fastest non-compiler that we have included in our external benchmark. The average speed up factor compared to Jekejeke Prolog is around 56.9%. The worst slow down factor was around 98.2% for query. The best speed up factor is around 21.7% for nrev.

Picture 10: SWI Prolog Performance

The SWI Prolog system is not the only system that cannot apply an optimization to query. All of the tested Prolog systems seem to have problems with this test program. This is very astonishing since it is based on a predicate lookup which is very well amenable to first argument indexing. A further test program that might profit from indexing is crypt. For this test program almost all Prolog systems show also a problem. Only the B-Prolog system and the Ciao Prolog do not suffer extremely in this case. The Jekejeke Prolog system on the other hand will use a multi-argument index for the predicate sum2/4 in crypt.

The separation of the speed ups into the two groups deterministic and non-deterministic is perfect for SWI Prolog. Unfortunately the calc example does not show some special speed up over the average. SWI Prolog does perform a DCG expansion similar to GNU Prolog. But SWI Prolog places additional unification steps subsequent to DCG actions into the body of a grammar rule to make it steadfast similar to the Jekejeke Prolog system. This could affect the performance of SWI Prolog for the calc test program.

The SWI Prolog system speed-up shows a modest span of 86.6%. A smaller span is only found for the GNU Prolog system with 58.7%. The biggest span is found for the SICStus Prolog system with 378.2%. The variance of the system speed-up shows a similar picture, means that we do have similar clustering on both sides of the speed spectrum for all Prolog systems. The SWI Prolog system speed-up shows again a modest variance of 22.9%. A smaller variance is only found for the GNU Prolog system with 16.1%. The biggest variance is found for the SICStus Prolog system with 138.5%.