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
> > > >
> > >
> >
> >
> >
>
>

Reply via email to