not entirely.. I was able to make up the drools part (I think) - I got about 5 seconds for 1000 x 50000.
But he has pasted his objects he used, and the rule, just not the code to invoke, or perhaps all of the jess code. On 4/27/06, Peter Lin <[EMAIL PROTECTED]> wrote: > > did the user post the entire source for his test in drools3 and JESS? > > peter > > > On 4/26/06, Michael Neale <[EMAIL PROTECTED]> wrote: > > > > yeah in my noodling I got < 5 seconds, but its was just a guess. I would > > like to know what Jess does. > > I gather there are 50 million combinations to test, so 0.2 seconds seems > a > > little unrealistic... but no hard facts. > > > > On 4/27/06, Peter Lin <[EMAIL PROTECTED]> wrote: > > > > > > looking at some recent results I got, 20 seconds seems a bit off. > > > > > > > http://woolfel.blogspot.com/2006/04/comparing-sumatra-and-drools-3.html > > > > > > when I ran a test with 20 rules with 2 conditional Elements and 5 > shared > > > nodes. it was 1.1 seconds for 50K objects. > > > > > > the sample rule is probably matching fully for all 50K objects , so > that > > > could explain the 20 seconds. it would be useful to get the benchmark, > > > classes and jess sample. > > > > > > peter > > > > > > > > > > > > On 4/26/06, Mark Proctor <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > > > > > > > > > > > ---------- Forwarded message ---------- > > > > From: "Michael Neale" <[EMAIL PROTECTED]> > > > > To: [email protected] > > > > Date: Wed, 26 Apr 2006 19:53:24 +1000 > > > > Subject: Re: [drools-user] reply: [drools-user] Question: about > > > drools3.0performnce > > > > and the code to invoke? I assume you have 50000 instances of > > AlarmDefine > > > > in > > > > wm? (that is implied). > > > > > > > > > > > > On 4/26/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> > wrote: > > > > > > > > > > > > > > > Thanks, the whole rule file: > > > > > > > > > > package com.datangmobile.rules > > > > > > > > > > import com.datangmobile.rules.alarmdefine; > > > > > import com.datangmobile.rules.alarm; > > > > > > > > > > rule "alarmdefine" > > > > > no-loop true > > > > > when > > > > > #conditions > > > > > alarm(reason:alarmreason, level:alarmlevel) > > > > > alarmdefine(alarmreason==reason, > alarmlevel!=level) > > > > > then > > > > > #actions > > > > > alarm.setCounter(); > > > > > end > > > > > > > > > > alarmdefine object: > > > > > package com.datangmobile.rules; > > > > > > > > > > public class alarmdefine { > > > > > > > > > > private int alarmreason; > > > > > private int alarmlevel; > > > > > private int objtype; > > > > > private int alarmtype; > > > > > > > > > > public int getAlarmlevel() { > > > > > return alarmlevel; > > > > > } > > > > > public void setAlarmlevel(int alarmlevel) { > > > > > this.alarmlevel = alarmlevel; > > > > > } > > > > > public int getAlarmreason() { > > > > > return alarmreason; > > > > > } > > > > > public void setAlarmreason(int alarmreason) { > > > > > this.alarmreason = alarmreason; > > > > > } > > > > > public int getAlarmtype() { > > > > > return alarmtype; > > > > > } > > > > > public void setAlarmtype(int alarmtype) { > > > > > this.alarmtype = alarmtype; > > > > > } > > > > > public int getObjtype() { > > > > > return objtype; > > > > > } > > > > > public void setObjtype(int objtype) { > > > > > this.objtype = objtype; > > > > > } > > > > > } > > > > > > > > > > alarm object: > > > > > package com.datangmobile.rules; > > > > > > > > > > public class alarm { > > > > > > > > > > private int alarmreason; > > > > > private int alarmlevel; > > > > > private int objtype; > > > > > private int alarmtype; > > > > > private String dn; > > > > > > > > > > static private int counter = 0; > > > > > > > > > > public int getAlarmlevel() { > > > > > return alarmlevel; > > > > > } > > > > > public void setAlarmlevel(int alarmlevel) { > > > > > this.alarmlevel = alarmlevel; > > > > > } > > > > > public int getAlarmreason() { > > > > > return alarmreason; > > > > > } > > > > > public void setAlarmreason(int alarmreason) { > > > > > this.alarmreason = alarmreason; > > > > > } > > > > > public int getAlarmtype() { > > > > > return alarmtype; > > > > > } > > > > > public void setAlarmtype(int alarmtype) { > > > > > this.alarmtype = alarmtype; > > > > > } > > > > > public String getDn() { > > > > > return dn; > > > > > } > > > > > public void setDn(String dn) { > > > > > this.dn = dn; > > > > > } > > > > > public int getObjtype() { > > > > > return objtype; > > > > > } > > > > > public void setObjtype(int objtype) { > > > > > this.objtype = objtype; > > > > > } > > > > > > > > > > static public void setCounter(){ > > > > > > > > > > counter++; > > > > > } > > > > > > > > > > static public int getCounter(){ > > > > > return counter; > > > > > } > > > > > } > > > > > > > > > > > > > > > > > > > > can you provide your objects that you are using, and the whole > rule > > > > file? > > > > > > > > > > On 4/26/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> > > wrote: > > > > > > > > > > > > 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
