Dear user group: I have a queston about the performance of drools3.0. My only one rule is:
rule "alarmdefine" no-loop true when #conditions alarm(reason:alarmreason, level:alarmlevel) alarmdefine(alarmreason==reason, alarmlevel!=level) then #actions alarm.setCounter();? end My eviroment: eclipse3.2M5, jdk1.4.2-03 Testcode is : for(int i=1; i<1000; i++) { alarm malarm = new alarm(); malarm.setAlarmreason(i); malarm.setAlarmlevel(1); malarm.setObjtype(1); malarm.setAlarmtype(1); workingMemory.assertObject( malarm ); workingMemory.fireAllRules(); } when alarmdefine exist 50000 record, execute time is 20s when alarmdefine exist 5000 recode, execute time is 2s Then I have done the same test with JESS, the rule is: (defrule alarm-cleared-all (alarm (alarmreason ?a) (alarmlevel ?x) ) (alarmdef (alarmreason ?a) (alarmlevel ?y&:(<> ?y ?x))) => (call alarm setCounter) ) when alarmdefine exist 50000 record, execute time is only 0.2s Great difference! Why? What can I do? Thanks Wangwei