6 Performance
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.
Generated with CERN WebMaker