[jboss-jira] [JBoss JIRA] (JBRULES-1471) Accumulate should not call getResult() more then necessary

Geoffrey De Smet (JIRA) jira-events at lists.jboss.org
Wed Feb 1 05:27:09 EST 2012


     [ https://issues.jboss.org/browse/JBRULES-1471?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Geoffrey De Smet updated JBRULES-1471:
--------------------------------------

    Fix Version/s: 5.4.0.Beta3
                       (was: 5.4.0.Beta2)

    
> Accumulate should not call getResult() more then necessary
> ----------------------------------------------------------
>
>                 Key: JBRULES-1471
>                 URL: https://issues.jboss.org/browse/JBRULES-1471
>             Project: Drools
>          Issue Type: Task
>      Security Level: Public(Everyone can see) 
>          Components: drools-core  (expert)
>            Reporter: Geoffrey De Smet
>            Assignee: Edson Tirelli
>             Fix For: 5.4.0.Beta3
>
>
> For this rule:
> rule "roomCapacityTooSmall" // TODO it takes 50-90% of the performance of drools-solver
>     when
>         $period : Period();
>         $room : Room($capacity : capacity);
>         $totalStudentSize : Number(intValue > $capacity) from accumulate(
>             Exam(period == $period, room == $room, $studentSize : topicStudentSize),
>             sum($studentSize)
>         );
>    ...
> end
> Outside drl, I update 2 out of 700 Exam objects and call fireAllRulesAndCalculateDecisionScore. 
> The drl never changes an Exam. Period and Room never change.
> That results into this log:
> Breakpoint reached at org.drools.solver.core.evaluation.EvaluationHandler.fireAllRulesAndCalculateDecisionScore(EvaluationHandler.java:90)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.reverse(SumAccumulateFunction.java:62)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.getResult(SumAccumulateFunction.java:70)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.accumulate(SumAccumulateFunction.java:53)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.getResult(SumAccumulateFunction.java:70)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.reverse(SumAccumulateFunction.java:62)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.getResult(SumAccumulateFunction.java:70)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.accumulate(SumAccumulateFunction.java:53)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.getResult(SumAccumulateFunction.java:70)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.reverse(SumAccumulateFunction.java:62)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.getResult(SumAccumulateFunction.java:70)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.accumulate(SumAccumulateFunction.java:53)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.getResult(SumAccumulateFunction.java:70)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.reverse(SumAccumulateFunction.java:62)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.getResult(SumAccumulateFunction.java:70)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.accumulate(SumAccumulateFunction.java:53)
> Breakpoint reached at org.drools.base.accumulators.SumAccumulateFunction.getResult(SumAccumulateFunction.java:70)
> There are 4 accumulate calls and 4 reverse calls. That might be accurate.
> There are 8 getResult calls, that should only be 1.
> Also, the getResult method creates a new Double instance each time:
>   return new Double( data.total );
> It might be better to do
>   return Double.valueOf(data.total);
> to allow the JVM to hot spot optimize it.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list