Just FYI, the array list is created once and reused with incremental
addition/removal of elements.
The problem is that the engine does not know when you are done inserting
all the Post facts, so each post inserted is propagated down the network
with the cancellation and reactivation of the rule.
This is one of those situations where a use of a control fact might be
recommended, if you are inserting Post facts in batches. E.g.:
rule X
when
exists( AllPostsInserted() )
$a : ArrayList(size > 0) from collect(Post());
then
...
end
Edson
2012/2/13 Wolfgang Laun <wolfgang.laun(a)gmail.com>
Repeatedly creating this ArrayList is bound to be O(n2).
Why do you want the Post facts as a List? There may be better ways for
achieving your goal.
-W
On 13 February 2012 20:49, Shur, Bob <robert.shur(a)hp.com> wrote:
> I have a simple class Post { int id; ... }. I insert some number of them
> as facts and then call ksession.execute(facts);
>
> The whole drl file (except for package and import statements) is:
>
> rule "collect"
> when
> $a : ArrayList(size > 0) from collect(Post());
> then
> System.out.println("Number of posts: " + $a.size());
> System.out.println("DONE");
> end
>
> The time it takes to run is n-squared in the number of posts. For 4000,
> 8000, 16000, 32000, 64000 posts the time is (in 1/10 seconds):
>
> 4, 14, 56, 220, 852
>
> Is this expected? Is there a better way for me to do the collect?
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @
www.jboss.com