Managed to test also Jinni Prolog. This Prolog system was the most difficult to test. On a Mac, there some problem with memory management, and one gets constantly "autoreleased with no pool in place" error messages. With the result that the GUI stops working. When we tested we found further errors:

1) The rem/1 evaluable function is not yet supported: Had to replace rem/1 by mod/1 in our test cases.
2) The -/1 is not a predefined prefix operator: Had to replace -U etc.. by -(U) etc.. in our test cases.
3) Don't call your predicate move/3: It will be accepted without error during consult, but when you try to invoke it, it will lookup some GUI library move command. Had to replace move/3 by moveit/3.
4) The queens test case hung. Don't know why, but it didn't finish after 1 minute or so. Instead the CPU started frying.
5) The query test case aborted. Got some strange GC error message, namely bad data in val/3=>_3934: <0,_3934>.

I tested with JDK 1.7 and not with JDK 1.6 as in our previous JVM tests. JDK 1.7 should be faster. Since queens and query failed we could not run the full test suite. From the experience with the other JVM Prolog systems we didn't give a try to mtak and calc. The test results were very disappointing:

nrev: 3'003 ms
crypt: 5'344 ms
deriv: 5'411 ms
poly: 2'539 ms
qsort: 3'052 ms
tictac: 1'223 ms
perfect: 8'746 ms

If I compare with Jekejeke Prolog on the corresponding test cases, I see that Jekejeke Prolog would do these test cases in 739 ms. The total time spent by Jinni Prolog on the other hand is 29318 ms. This is a factor of around 40 times slower.

If I have time, should also check whether all tests were running correctly, the tictac 1'223 ms look suspicious. Last but not least was using the consult/1 command, maybe there is some compile option which delivers better results. Not sure.

Previous Post on Testing JVM Prolog Systems

Jekejeke Runtime: Runtime Benchmarks

#prolog #jvm #benchmark  
Jekejeke Logic Programming's profile photo
Corr.: It warns about overriding move/3. But its difficult to see, since errors are not shown in GUI but on the console:

'!! Prolog_Error'('TypeException','invalid update attempt to: <predmark/0,move/4>==>37948:(0)'')

But this is only seen when compiling, there error message is lacking when consulting. There is also an override error in the query test program, where pop/2 is overridden.
Compilation does not yet work. The compile/1 command did not yet accept any of my attempts to supply a Prolog text.
Add a comment...