[rules-dev] Some performance ideas for 4.1
Mark Proctor
mproctor at codehaus.org
Sun Aug 12 19:16:22 EDT 2007
some more ideas :)
Network re-writting through network analysis.
For multi-threaded systems look to which subsystems can maybe have there
own thread. The Agenda is a good candidate here, I'm sure there are others.
Mark
Mark Proctor wrote:
> 1) Lazy latch nodes, that means the parent node does not propagate
> unless there is something to join against in the child node.
>
> 2) Lazy latch querries. Add the DroolsQuery pattern to the end. Find
> either the last unshared node or the root beta node and put in a
> "block" semaphore, that means no data will propagate that is specific
> to the query rule. When the DroolsQuery object is propagated to the
> JoinNode it signals the "block" semaphore to propagate all its data.
> All data sets a specail flag on the Tuple to say that no left memory
> is to be remember, similar to how sequential works. Maybe the check
> for sequentail node memory and this can be merged.
>
> 3) Collapse similar shared node groups into single execution units.
> This can be used for sequential mode and standard mode, will need to
> add a method for someone to declare that standard mode will not have
> it's rulebase changed - i.e. its sealed/final or what ever we want to
> call it. We can also optionaly JIT this
>
> 4) re-order alpha nodes to maximise sharing, this will also improve 3).
>
> 5) Static Agenda. Here the node memories use a linkedhashmap which
> enables the join iteration in propagation order, Activations fire when
> they reach the TerminalNode - there is no Agenda. This will
> approximate a combination of LIFO+Rule Declaration Order and while it
> will be slightly heavier for node memories will do a lot less work for
> situations where there are a large number of conflict sets where only
> a small percentage of them fire.
>
> 6) Allow some data to be marked as "closed world". This means the data
> will only ever be created inside of the WorkingMemory. This way we can
> analyse the rules and handle the life cycle of the data and allow us
> to auto-unpropagate it back to the ObjectTypeNode when we know it will
> have no further impact.
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
More information about the rules-dev
mailing list