[rules-users] Speed up inserting of rules into knowledge base

Piotr Jedrychowski pjedrychowski at proximetry.pl
Tue Feb 1 02:29:28 EST 2011


Hello.

Some time ago I wrote an e-mail with question how to parse and load a 
large group of rules in an efficient way. I've made a lot of tests and I 
have couple conclusions. Is there a possibility that someone could 
confirm (if I'm right) or deny (if I'm wrong) my conclusions, and 
explain why Drools behave in such a way.

1) Parse rules in groups.
Parsing of rules should be done in large groups. Send to 
knowledgeBuilder.add() method e.g. 100 rules at one time, instead of 
parsing one by one rule.

2) Parsing takes a lot of memory.
During parsing of group about 20000 rules my test application takes 
about 500MB memory.

3) Use only one package.
Loading rules into one package is extremely faster than loading every 
rule into separated package.

4) Call KnowledgeBase.add() method only once.
Prepared set of rules should be added by one call of KnowledgeBase.add() 
method instead of adding each rule by separated method call.

5) Method Session.fireAllRules() works extremely fast.
Despite fact that I load thousands of rules into KnowledgeBase, 
inserting a new fact and call Session.fireAllRules() works very 
efficient (it takes below 1ms).

Regards,
Piotr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110201/cce254f5/attachment.html 


More information about the rules-users mailing list