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

Reply via email to