See below.
2011/12/26 Zhuo Li <milanello1998(a)gmail.com>
Hi, team,****
** **
I have some quick questions here regarding performance best practices of
rule writing. See below two pieces of rules:****
** **
Rule “1”****
Salience 100****
No-loop true****
When $txn : data(sourceid ==
5&&txnjustify==”995”&&eval(creditOption($txn)==1)&&eval(isGCSwitch($txn))&&isCurrencyEquals($txn)==0&&compareToPostThreshold($txn)==2);
****
Then****
…****
End****
** **
Rule “2”****
Salience 100****
No-loop true****
When $txn : data(sourceid ==
5&&txnjustify==”995”&&eval(creditOption($txn)==1)&&eval(isGCSwitch($txn))&&isCurrencyEquals($txn)==0&&compareToPostThreshold($txn)==1);
****
Then****
…****
End****
** **
Questions:****
**1. **Will I gain better performance if I put the rule
differentiator condition “compareToPostThreshold($txn)==2” at the beginning
of both rule 1 and 2?
One kind pf Rete optimization is based on evaluating common constraints
once, therefore: no.
****
**2. **I saw salaboy’s video claiming that to avoid using eval() in
the rule. Do we have any alternative way to do that from a performance
consideration
Constraints based on fields using == are best. Other things may result in
eval-like evaluations anyway. Most of the time, it isn't eval that causes
performance setbacks.
or I’d better collect/ prepare all the data before I send them into the
session?
Not clear what you mean by this, but if you can provide attributes that
lend themselves to straightforward constraints it might be worthwhile
considering some up-front processing of facts.
****
**3. **What’s you guys’ naming convention for rule’s salience?
Not clear what you mean by that.
-W
****
** **
PS: my Drools version is 5.2.0.****
** **
Best regards****
Abe****
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users