<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Joe White wrote:
<blockquote
cite="mid:34BDFBE99738224A95074CB8A2C54D6ED95A9D@recsbs1.RecondoTech.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; ">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="Section1">
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">I’ve
spent a little time
looking into allowing the invokers to be generated as methods in a
single class
rather than individual classes as is discussed below.</span></p>
</div>
</blockquote>
Btw chatting to edson, he's not sure this will reduce perm gen size -
what is the size differnce from one big class, and multiple small
ones,on the perm gen. It's worth checking that this will make a
difference, before doing it.<br>
<blockquote
cite="mid:34BDFBE99738224A95074CB8A2C54D6ED95A9D@recsbs1.RecondoTech.com"
type="cite">
<div class="Section1">
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">It seems
like a new set of mvel
templates will need to be created to allow the java invokers to be
generated as
methods rather than individual classes. Then the Abstract Builder code
will
need to be updated to reference the correct template based on the user
provided
granularity level. For granularity, should there be any levels outside
of: one
class per package, one class per rule, and the current one class per
invoker?</span></p>
</div>
</blockquote>
If you can show that this is worth while doing, I'd look at making it
configurable - although typically I imagine one per package.<br>
<blockquote
cite="mid:34BDFBE99738224A95074CB8A2C54D6ED95A9D@recsbs1.RecondoTech.com"
type="cite">
<div class="Section1">
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Am I on
the right track?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Joe<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><o:p> </o:p></span></p>
<div>
<div
style="border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium; padding: 3pt 0in 0in;">
<p class="MsoNormal"><b><span
style="font-size: 10pt; font-family: "Tahoma","sans-serif"; color: windowtext;">From:</span></b><span
style="font-size: 10pt; font-family: "Tahoma","sans-serif"; color: windowtext;">
<a class="moz-txt-link-abbreviated" href="mailto:rules-users-bounces@lists.jboss.org">rules-users-bounces@lists.jboss.org</a>
[<a class="moz-txt-link-freetext" href="mailto:rules-users-bounces@lists.jboss.org">mailto:rules-users-bounces@lists.jboss.org</a>] <b>On Behalf Of </b>Mark
Proctor<br>
<b>Sent:</b> Thursday, August 14, 2008 11:01 AM<br>
<b>To:</b> Rules Users List<br>
<b>Cc:</b> Rules Dev List<br>
<b>Subject:</b> Re: [rules-users] Max packages<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Joe White wrote: <o:p></o:p></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Mark,
thank you very much for
your help, it is greatly appreciated.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> </span><o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";">“There
are improvements we can make to generated code into a single class and
use a
switch statement to invoke the correct part, but we don't have time for
that right
now, so would need to come from the community.”</span><o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";"> </span><o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif"; color: rgb(79, 129, 189);">I
would be interested in doing this work if someone can point me
in the right direction on where to start.</span><o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";">look
for the *.mvel templates in drools-compiler you'll see how we generate
the
code. Then look at all the various java builders, like
JavaConsequenceBuilder
and you'll see how we construct it. compiled code is done in two
places. We
first generate an invoker class which implements the interface, like
the
Consequence interface and then we genernate the code to be executed
which is
called via the invoker. It needs to be two as the needed parameters for
the
java consequence to execute differer (different number of vars) so the
invokers
job is to match the needed interfaces and adapt/bridge to calling to
the actual
consequence/eval/predicate. We currently generate all the
consequence/eval/predicate in a single class per rule, but we have a
class per
invoker.<br>
<br>
So we now need invoker apis, like Consequence, to take an int so it can
use a
switch statement to which allows multiple invocations to be generated
into the
same file. An idea solution will take a configuration on teh
granularity that
people want - to what we have now right up to putting everything into a
single
file for the entire package.<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif"; color: rgb(79, 129, 189);">I
also would be interested in doing the work to allow drools to
reference multiple levels of inner classes. </span><o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";">This
is done and fixed in 4.0.x and trunk - we just haven't released any
binaries
wit hteh fix.<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif"; color: rgb(79, 129, 189);">Our
work would benefit from both pieces of functionality.
I’ll move this to the developer list, but would appreciate if somebody
knowledgeable could show me where to get started on the code necessary
to
generate to a single class.</span><o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";">I've
cc'd this into the dev mailing list, so please when you reply do so to
just that
mailing list.<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif"; color: rgb(54, 95, 145);"> </span><o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif"; color: rgb(54, 95, 145);">Thanks,</span><o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif"; color: rgb(54, 95, 145);">Joe<br>
<br>
<br>
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> </span><o:p></o:p></p>
<div>
<div
style="border-style: solid none none; border-color: -moz-use-text-color; border-width: 1pt medium medium; padding: 3pt 0in 0in;">
<p class="MsoNormal"><b><span
style="font-size: 10pt; font-family: "Tahoma","sans-serif"; color: windowtext;">From:</span></b><span
style="font-size: 10pt; font-family: "Tahoma","sans-serif"; color: windowtext;">
<a moz-do-not-send="true"
href="mailto:rules-users-bounces@lists.jboss.org">rules-users-bounces@lists.jboss.org</a>
[<a moz-do-not-send="true"
href="mailto:rules-users-bounces@lists.jboss.org">mailto:rules-users-bounces@lists.jboss.org</a>]
<b>On Behalf Of </b>Mark Proctor<br>
<b>Sent:</b> Wednesday, August 13, 2008 2:53 AM<br>
<b>To:</b> Rules Users List<br>
<b>Subject:</b> Re: [rules-users] Max packages</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Joe White wrote: <o:p></o:p></p>
<p class="MsoNormal">Can someone help me understand the relationship
between the
number of Packages in a single RuleBase and PermGen memory consumption?
I have
a test that generates 200 rules and then adds those rules as different
packages to a single rule base. PermGen consumption grows near linearly
with
the addition of Packages to the rule base and on a default PermGen
setting the
JVM runs out of PermGen after about 120 packages.<o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";">It's
not related to Packages, it's related to the number of rules and
whether those
rules have compiled java parts - like the consequence, eval etc - each
one adds an additional class.<br>
<br>
<br>
</span><o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Is every new Package and RuleBase backed by a
set of
generated Classes? Is there a way to get around the amount of class
generation
that is taking place?<o:p></o:p></p>
<p class="MsoNormal">The test has been run against Drools 5.<o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";">You
can use MVEL, which has no class generation. There are improvements we
can make
to generated code into a single class and use a switch statement to
invoke the
correct part, but we don't have time for that right now, so would need
to come
from the community.<br>
<br>
<br>
</span><o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Thank you for your help,<o:p></o:p></p>
<p class="MsoNormal">Joe<o:p></o:p></p>
<pre> <o:p></o:p></pre>
<pre style="text-align: center;"><o:p> </o:p></pre>
<pre style="text-align: center;">
<hr align="center" size="4" width="90%">
</pre>
<pre style="text-align: center;"><o:p> </o:p></pre>
<pre style="text-align: center;"><o:p> </o:p></pre>
<pre style="text-align: center;"> <o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>rules-users mailing list<o:p></o:p></pre>
<pre><a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><o:p></o:p></pre>
<pre><a moz-do-not-send="true"
href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";"> </span><o:p></o:p></p>
<pre><o:p> </o:p></pre>
<pre style="text-align: center;">
<hr align="center" size="4" width="90%">
</pre>
<pre><o:p> </o:p></pre>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>rules-users mailing list<o:p></o:p></pre>
<pre><a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><o:p></o:p></pre>
<pre><a moz-do-not-send="true"
href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<p class="MsoNormal"><span
style="font-size: 12pt; font-family: "Times New Roman","serif";"><o:p> </o:p></span></p>
</div>
<pre wrap="">
<hr size="4" width="90%">
_______________________________________________
rules-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>