[rules-users] Request for assistance in removing eval from a rule
Warren, David [USA]
warren_david at bah.com
Mon Sep 15 13:44:42 EDT 2008
Folks -
After seeing the thread on evals hurting performance a couple of weeks
ago, I tried to remove them from a rule set we are using (running Drools
4.0.4), and have had limited success.
An example is shown below. We're using evals every time we make a call
to "rulesUtil", a helper class we have for checking strings for
keywords. Two questions:
1. Does using inline evals (like below) hurt performance as much as
using non-inline evals?
2. If so, any thoughts for how to rewrite this rule to avoid using the
eval?
rule 'my rule'
salience 790
activation-group "priorityRule"
when
ruleUtil : RulesUtil( )
s1 : Sensor( source == "X, $rfp : RFP , eval(
ruleUtil.containsKeywordString($rfp, "Y" )) , $tcn : TCN)
s2 : Sensor( TCN != $tcn, source == "Z"
then
System.out.println("my rule");
priority.setPriorityName("A");
end
Thanks,
David Warren
________________________________
From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Edson Tirelli
Sent: Friday, September 05, 2008 2:59 PM
To: Rules Users List
Subject: Re: [rules-users] Drools, Performance issues on 4.0.7 Vs 2.5
Start by eliminating the evals and writing your constraints properly
inside the patterns. Drools 3+ is orders of magnitude faster than Drools
2.x, but you need to leverage its power in your rules. Please read the
manual as the version 3 was a completely rewrite of version 2. Version 4
is an improvement over 3.
As an example, look at this:
http://blog.athico.com/2006/11/rush-hour-and-content-based-routing.html
[]s
Edson
2008/9/5 Rout, Sushanta (ThoughtMill) <Sushanta.Rout at ihg.com>
We were using Drools 2.5 version earlier. Now we have switched
to drools
4.0.7. But we see significant issues with performance like
drools 4.0.7
is three times slower than 2.5 . Has anybody encountered the
issue?
Here is a sample of the rule, we have some more similar to this.
rule "test"
dialect "java"
activation-group "group1"
when
$croNumberDetailsRequest :
CRONumberDetailsRequest()
$resdirectPhoneNumber : ResdirectPhoneNumber()
eval($resdirectPhoneNumber.getType().getId() == 5
&&
$resdirectPhoneNumber.isValidForBrand($croNumberDetailsRequest.getBrand(
)) &&
$croNumberDetailsRequest.getRegion() !=
null &&
$resdirectPhoneNumber.isValidRegion($croNumberDetailsRequest.getRegion()
) &&
$croNumberDetailsRequest.getLocale() !=
null &&
$resdirectPhoneNumber.isValidForLocaleId($croNumberDetailsRequest.getLoc
ale()) &&
$resdirectPhoneNumber.isValidSlot($croNumberDetailsRequest.getSlot()));
then
ResultList.add($resdirectPhoneNumber);
end
_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080915/861a8364/attachment.html
More information about the rules-users
mailing list