[Next] [Previous] [Up] [Top] [Contents]

6 Performance

6.2 Measurements


The benchmarks described above have been performed on a Sun SPARCstation 5, using both SDML and a version of OPS5 called CParaOPS5*1. The SDML rules were compiled into Objectworks\Smalltalk(R) , whereas the OPS5 rules were compiled into C. Measurements for each of the benchmarks are shown in table 1. The timings exclude compilation time and the memory usages exclude any memory occupied by the compiled code. A rulebase in the SDML implementation of rubik performs a considerable amount of initialization that can be reused if multiple cubes are solved*2, so measurements excluding this rulebase are also shown. SDML's facility to dispose of old databases was not used in these benchmarks.


SDML performs many optimisations at compile time, including computing dependencies. Incremental compilation, and caching of compiled rules, are used to limit the amount of recompilation that has to be done. Nevertheless, it is important that compilation can also be carried out reasonably efficiently, particularly when meta-level rules are used to generate new object-level rules. For each benchmark, the time taken to compile all the rulebases and the size of the compiled code are shown in table 1. It should be noted that the memory measurements for SDML exclude space occupied by the primitives and other code necessary to fire the rules. In the current release, the entire SDML language and environment (including most of Smalltalk) is required to fire rules, adding about 2.5MB to the memory usage. However, the measurements show that the additional space occupied by the compiled rules is reasonably low.


The measurements show that SDML is reasonably efficient for certain kinds of problems, and therefore that forward chaining is viable for declarative rules. They are particularly good considering that SDML is written in and compiles into Smalltalk, whereas OPS5 uses C.*3 However, we do not claim that declarative rules are more efficient in general. It would obviously require more benchmarks and more comparisons with other systems to justify such an assertion.


Efficient Forward Chaining for Declarative Rules in a Multi-Agent Modelling Language - 16 FEB 95
[Next] [Previous] [Up] [Top] [Contents]

Generated with CERN WebMaker