[jboss-jira] [JBoss JIRA] (DROOLS-651) Bindings do not cache actual values
Marc Dzaebel (JIRA)
issues at jboss.org
Thu Nov 20 19:09:39 EST 2014
[ https://issues.jboss.org/browse/DROOLS-651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13021779#comment-13021779 ]
Marc Dzaebel edited comment on DROOLS-651 at 11/20/14 7:09 PM:
---------------------------------------------------------------
I agree with your analysis. The user could even cache himself or use the workaround above, so there is no urgent need for a new feature. There are certainly more important ideas than optional cache and (if I'm the first) the need seems to be seldom (so reject is ok). The workaround might be valuable in the documentation too.
Thanks to the Davide, Mark and Mario
Best regards, Marc
was (Author: mdzaebel):
I agree with you analysis. The user could even cache himself or use the workaround above, so there is no urgent need for a new feature. There are certainly more important ideas than optional cache and (if I'm the first) the need seems to be seldom (so reject is ok). The workaround might be valuable in the documentation too.
Thanks to the Davide, Mark and Mario
Best regards, Marc
> Bindings do not cache actual values
> -----------------------------------
>
> Key: DROOLS-651
> URL: https://issues.jboss.org/browse/DROOLS-651
> Project: Drools
> Issue Type: Enhancement
> Affects Versions: 6.2.0.Beta3
> Environment: Win7, Drools 6.2.0 Beta3 (probably all Drools versions)
> Reporter: Marc Dzaebel
> Assignee: Mario Fusco
> Priority: Minor
>
> Create sample Drools project, add following method to the Message class:
> {noformat} public List<String> list() {
> System.out.println("Call!");
> return Arrays.asList("one", "two");
> } {noformat}
> sample.drl:
> {noformat}
> package com.sample
> import com.sample.DroolsTest.Message;
> import java.util.List;
> import java.util.ArrayList;
>
> rule ""
> when m : Message(L : list(), L.size>0)
> then System.out.println("L:"+L);
> end
> {noformat}
> Running the project will result in the following output:
> {noformat}
> Call!
> Call!
> L:[one, two]
> {noformat}
> So _list()_ is called *two* times (duplicate). This may be due to the replacement of "L" with _list()_ in the second constraint. This is ok for simple +getters+ as here HotSpot optimizes this away. However, long running methods will produce unnecessary overhead, especially if further constraints on "L" are added (which I verified produce additional calls to list()). So at least methods with one or more arguments should be saved in temporary variables that should be used in further constraints. A fix of this problem will certainly accelerate Drools performance on similar patterns. If this is not feasible, at least a comment should be added to the documentation.
--
This message was sent by Atlassian JIRA
(v6.3.8#6338)
More information about the jboss-jira
mailing list