[rules-users] Is RETE algo optimizes the performance in a stateless session.

Leonardo Gomes leonardo.f.gomes at gmail.com
Fri Sep 24 14:07:58 EDT 2010


Hello Harshit / Mark,

My reasoning behind the yes, is that:

- If you have 10 rules that won't necessarily always match, it's better to
use Rete, than sequentially match one-by-one. The tree structure with the
sharing of nodes for different rules seems to always be a better approach
for me, than sequentially testing one-by-one and, in some cases, retesting
the same condition on different rules (if that happens);

- You can write if-then-elses in a imperative language and perform better
than Rete, but if your rules are complicated and you have many of them, it's
likely that rete can do a better job; Also, if you need to change your rules
or add new ones, it will be easier to do that declaratively;

I first put the links, because you can use that to judge yourself whether or
not you might gain in performance in your own scenarios, with that material.


@Mark:

In general a stateless session is just a convenience api for stateful, it
> just wraps. So no performance gain at all.


I think here you're saying that there will be no performance gain compared
to a stateful session, but I believe that the question was more on the lines
of "I know that with a stateful it's efficient, how about stateless". I
tried to say that, yes, it's also worth using Rete in stateless scenarios.

Cheers,
Leo.

2010/9/24 Mark Proctor <mproctor at codehaus.org>

>  On 24/09/2010 16:18, Leonardo Gomes wrote:
>
> Have a look here: http://www.drdobbs.com/184405218
>
> here: http://blog.athico.com/2007/07/sequential-rete.html
>
> and here: http://herzberg.ca.sandia.gov/guidelines.shtml
>
> The easy answer for your question is "Yes" ;-)
>
> It depends :)
>
> In general a stateless session is just a convenience api for stateful, it
> just wraps. So no performance gain at all.
>
> There is a "sequential" mode, but in all honest you won't get any
> measurable perf gain. So I wouldn't use sequential mode for performance, the
> only reason to use it is if you want your rules to execute sequentially.
>
> Mark
>
>
> Cheers,
> Leo.
>
>  2010/9/24 Harshit Bapna <hrbapna at gmail.com>
>
>> Hi All,
>>
>> In a scenario where lets say 10 rule are to be fired (in any order) in a
>> stateless session than will I get the benefits of RETE algorithm (i.e
>> increased performance).
>> i.e Whether the engine will fire all the ten results in a parallel fashion
>> or Whether the engine will file each rule one by one.
>>
>> How RETE algorithm will improve the performance of the engine for rules
>> fired in stateless session ?
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing listrules-users at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100924/68611826/attachment.html 


More information about the rules-users mailing list