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