<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Right off the bat I'd say try to get rid of the eval usage.&nbsp; Can you put the phone number into an object like this:<br><br>class PhoneNumber {<br>&nbsp; private char digit0;<br>&nbsp; private char digit1;<br>&nbsp; ///...same for the rest of the digits<br><br>&nbsp; public char getDigit0() { return digit0; }<br>
&nbsp; public char getDigit1() { return digit1; }<br>}<br><br>Then the conditions would look like this:<br><br>digit0 == '$param'<br><br>Behind the scenes hopefully this will optimize better.&nbsp; The use of eval won't optimize well.<br><br>Are you using sequential mode?&nbsp; This might be a good candidate for that if setting the price does not trigger any other rules to fire.<br><br>--- On <b>Fri, 5/14/10, Antonio Anderson Souza <i>&lt;antonioams@gmail.com&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Antonio Anderson Souza &lt;antonioams@gmail.com&gt;<br>Subject: [rules-users] Jbilling Drools performance<br>To: "Drools Users Mailing list" &lt;rules-users@lists.jboss.org&gt;<br>Date: Friday, May 14, 2010, 1:28 PM<br><br><div id="yiv830849712"><div class="gmail_quote"><div><div></div><div class="h5">Dear All,<br><br><div class="gmail_quote">I'm deploying&nbsp; a
 JBilling using Drools in a Telecom Carrier in Brazil, and I'm using Decision tables in xls files to execute the pricing, my pricing table has about 40.000 rules, and I'm getting a terrible performance about 1.5 minute to execute the price of each CDR (Call Detail Record) mediated.<br>



<br>Follow bellow a small piece of my decision table:<br><br>



        
        
        
        
        
        

<table border="0" cellspacing="0">
        <colgroup><col width="133"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="113"><col width="114"><col width="86"></colgroup>
        <tbody>
                <tr>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="133" height="17"><b>RuleTable Padrao</b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="113"><b><br></b></td>
                        <td align="LEFT" width="114"><br></td>
                        <td align="LEFT" width="86"><br></td>
                </tr>
                <tr>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" colspan="13" align="CENTER" bgcolor="#47b8b8" valign="MIDDLE" height="17"><b>CONDITION</b></td>




                        <td style="border-top: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>CONDITION</b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>ACTION</b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>PRIORITY </b></td>
                </tr>
                <tr>
                        <td style="border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" colspan="13" align="CENTER" bgcolor="#47b8b8" valign="MIDDLE" height="17"><b>PricingField</b></td>




                        <td style="border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>PricingManager</b></td>
                        <td style="border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>manager</b></td>
                        <td style="border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>salience</b></td>
                </tr>
                <tr>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff" height="17">name</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(0) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(1) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(2) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(3) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(4) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(5) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(6) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(7) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(8) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(9) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(10) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(11) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">itemId</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">setPrice($param)</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff"><br></td>
                </tr>
                <tr>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99" height="17">Campo</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito1</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito2</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito3</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito4</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito5</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito6</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito7</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito8</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito9</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito10</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito11</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito12</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">ID do Item</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Preço</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Ordem</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">1</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">7</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">2</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">6</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">3</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">4</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">4</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">5</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">6</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">2</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">7</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.40000</td>
                        <td align="RIGHT">8</td>
                </tr>
        </tbody>
</table>
<br><br>Is it normal? Are there somebody using Jbilling in a similar way? Does anybody can help me?<br><br>Best regards,<br><font color="#888888"><br clear="all">Antonio Anderson Souza<br>Voice Technology<br><a rel="nofollow" target="_blank" href="http://www.antonioams.com">http://www.antonioams.com</a><br>




</font></div><br>
</div></div></div><br>
</div><br>-----Inline Attachment Follows-----<br><br><div class="plainMail">_______________________________________________<br>rules-users mailing list<br><a ymailto="mailto:rules-users@lists.jboss.org" href="/mc/compose?to=rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></div></blockquote></td></tr></table><br>