The current GIT version brings some interesting performance improvements.
- Tabling, using GitHub - JanWielemaker/tabling_benchmarks: Benchmarks for tabling · GitHub has pretty much double the performance on all aspects now. This is the result of some more VM support, combining several built-in predicates that realise tabling, a better trie data representation and some improvements to several functions.
- Tabling uses about 50% of the memory it used to. That is the result of more compact tries as well as early deletion of tries after compiling them. There is an experimental flag to discard part of the intermediate tables.
- The VM is now on most platforms compiled as a function per instruction that call each other using tail-call optimization. This wins 5-10% on AMD64 using GCC 16. The interesting part is that this make Clang about as fast as GCC. Within noise comparing Clang 22 to GCC 16 on AMD64. Comparing AppleClang to GCC 15, AppleClang wins by about 10%. This avoids the complication of GCC based universal binaries on MacOS
Unfortunately this approach is slower on WASM, so we still use the ancient switch there as the fastest alternative.
Next release will make all this available!