(there is definetely a problem posting to this list) ---------- Forwarded message ---------- From: Yuri de Wit <[EMAIL PROTECTED]> Date: Jul 20, 2007 7:22 AM Subject: Fwd: [rules-users] Predicate expression effect on performance To: Rules Users List <rules-users@lists.jboss.org>
forgive the (possible) double posting, but often posts take a while to show up.... ---------- Forwarded message ---------- From: Yuri de Wit <[EMAIL PROTECTED]> Date: Jul 20, 2007 1:17 AM Subject: Re: [rules-users] Predicate expression effect on performance To: Rules Users List <rules-users@lists.jboss.org> (sorry, the OR was not part of the sample rule: I was just considering the same rule written in two different ways) I am seeing a considerable performance problem with my rules and I am trying to narrow down why. I have a small number or rules but hundreds of thousands of facts. At first the assertion goes very fast but it quickly degrades as more facts are asserted. I already reordered the predicates (I have between 8-12 predicates in most rules and reordered them more restrictive first) and saw some improvements, but not nearly enough. Then thought about to what extent predicate expressions where hitting me. Per what you say that cant be the reason. If Check is updated (as you mentioned) would that be equivalent to reasserting it into memory? I keep a status as a property of Check that get updated somewhat often. thanks, On 7/20/07, Michael Neale <[EMAIL PROTECTED]> wrote:
In a sense, yes - but its the result of the comparison that is "cached" really. In the case you described, it is subrule generation. So either side of the "or" is like a separate rule. In version 3, the result of isSameAmount (ie if it was true or false) is "cached". Things will only be re-checked if the "Check" fact changes (and the engine knows about the change). Note that this checking happens as you are asserting objects, not when you "fireAllRules" necessarily. On 7/20/07, Yuri de Wit <[EMAIL PROTECTED]> wrote: > > What is the extent of the performance impact caused by using predicate > expressions? > > Check( amount == $amount ) > or > Check( $amt : amount -> (isSameAmount($amt, $amount) ) > > My understanding is that once asserted the amount property will be > "cached" in the shadow fact, is the result of isSameAmount(...) also > cached? > > thanks, > > -- yuri > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users > _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users