<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=DE link=blue vlink=purple><font size="1" face="Arial" color="#808080"></font><br>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hello everyone.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>I&#8217;ve got a question regarding the performance
of Drools in STREAM mode. It seems to me, that either Drools is not very fast
here, or the problem is with the rule itself.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>This is the rule.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>rule &quot;ABC&#8221;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no-loop<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $a
: Aevent()<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $b
: Bevent(id == $a.id)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $c
: Cevent(id == $a.id)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retract($c);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retract($a);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retract($b);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;(actions)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>end<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>It basically says: act upon every group of A, B and C
events with the same ids. The retract statements will make sure, none of these
events will get matched again by this rule. Side question: is there any
possibility to do this rule without the retractions?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>Regarding the performance:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>If I put the arriving events in this sequence: A(x),
B(x), C(x) where x is the number of events being sent. No other events than A,
B and C with the same id being sent. And I repeat this sequence a small number
of runs (12 times in a row), then it will take Drools:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>For x=8, on average 3 seconds to detect all 96
patterns,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>for x=16, on average 30 seconds to detect all 192
patterns. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>But the average is not very meaningful. Sometimes the
Engine does it in (x=16) 10 seconds, and sometimes it takes him over a minute
to detect everything, sometimes it takes him nearly forever for no reason. We
tested this on different machines and we cannot predict a &#8220;stable&#8221;
behaviour. We figured out, that this instability might come from fireUntilHalt,
which we invoke from a separate thread. Some ABC groups get detected faster
than others and the total duration is totally variable as stated before.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>When calling fireAllRules upon every insert, the
total duration is stable (4,5 sec for x=16 and 12 runs) and also the detection
time for every ABC group seems to be even. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>So a few questions: whats the problem with
fireUntilHalt? Are we using it the wrong way? If fireAllRules is used after every
insert, can rules be triggered by actions of other rules? For event stream
processing a solution that fires almost always is desirable.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>Why is the overall performance so poor? If I do x=32
and do just one run, which means just a total of 32*3= 96 events being sent and
it takes him 2,6 seconds to detect all 32 patterns. That&#8217;s not very fast,
is it?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>I&#8217;m using Drools 5.1.1 and the latest JDK.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>It would be nice to get some opinions.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>Best regards,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'>Oliver <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-GB style='font-size:
10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

</div>

<br><table border="0" style="border-collapse: collapse" width="100%" id="table1">
<tr>
                <td width="272" style="border-bottom-style: double; border-bottom-width: 3px">&nbsp;</td>
                <td width="45" style="border-bottom-style: double; border-bottom-width: 3px">&nbsp;</td>
                <td style="border-bottom-style: double; border-bottom-width: 3px">&nbsp;</td>
</tr></table>

<br><br>

<table border="0" style="border-collapse: collapse" width="100%" id="table1">
        <tr>
                <td width="272"><font size="1" face="Arial" color="#808080"><b>SEEBURGER AG</b></font></td>

                <td width="45">&nbsp;</td>
                <td><font size="1" face="Arial" color="#808080">Vorstand/Seeburger Executive Board:</font></td>
        </tr>
        <tr>
                <td width="272"><font size="1" face="Arial" color="#808080">Sitz der Gesellschaft/Registered Office:</font></td>
                <td width="45">&nbsp;</td>
                <td><font size="1" face="Arial" color="#808080">Bernd Seeburger, Axel Haas, Michael Kleeberg</font></td>
        </tr>
        <tr>
                <td width="272"><font size="1" face="Arial" color="#808080">Edisonstr. 1</font></td>
                <td width="45">&nbsp;</td>
                <td><font size="1" face="Arial" color="#808080"></font></td>
        </tr>
        <tr>
                <td width="272"><font size="1" face="Arial" color="#808080">D-75015 Bretten</font></td>
                <td width="45"><font size="1" face="Arial" color="#808080"></font></td>
                <td><font size="1" face="Arial" color="#808080">Vorsitzender des Aufsichtsrats/Chairperson of the Seeburger Supervisory Board:</font></td>
        </tr>
        <tr>
                <td width="272"><font size="1" face="Arial" color="#808080">Tel.: 07252 / 96 - 0</font></td>
                <td width="45"><font size="1" face="Arial" color="#808080"></font></td>
                <td><font size="1" face="Arial" color="#808080">Dr. Franz Scherer</font></td>
        </tr>
        <tr>
                <td width="272"><font size="1" face="Arial" color="#808080">Fax: 07252 / 96 - 2222</font></td>
                <td width="45"><font size="1" face="Arial" color="#808080"></font></td>
                <td><font size="1" face="Arial" color="#808080"></font></td>
        </tr>
        <tr>
                <td width="272"><font size="1" face="Arial" color="#808080">Internet: http://www.seeburger.de</font></td>
                <td width="45"><font size="1" face="Arial" color="#808080"></font></td>
                <td><font size="1" face="Arial" color="#808080">Registergericht/Commercial Register:</font></td>
        </tr>
        <tr>
                <td width="272"><font size="1" face="Arial" color="#808080">e-mail: info@seeburger.de</font></td>
                <td width="45"><font size="1" face="Arial" color="#808080"></font></td>
                <td><font size="1" face="Arial" color="#808080">HRB 240708 Mannheim</font></td>
        </tr>
        
        
</table>

<p><font size="2" face="Arial"><br></font></p>
<p align="justify"><font size="1" face="Arial" color="#808080">Dieses E-Mail ist
nur f&uuml;r den Empf&auml;nger bestimmt, an den es gerichtet ist und kann vertrauliches
bzw. unter das Berufsgeheimnis fallendes Material enthalten. Jegliche darin
enthaltene Ansicht oder Meinungs&auml;u&szlig;erung ist die des Autors und stellt nicht
notwendigerweise die Ansicht oder Meinung der  dar. Sind Sie nicht der Empf&auml;nger, so haben Sie diese E-Mail irrt&uuml;mlich erhalten und jegliche Verwendung, Ver&ouml;ffentlichung, Weiterleitung, Abschrift oder jeglicher Druck dieser E-Mail ist strengstens untersagt. Weder die  noch der Absender (Oliver Roess) &uuml;bernehmen die Haftung f&uuml;r Viren; es obliegt Ihrer Verantwortung, die E-Mail und deren 
Anh&auml;nge (0) auf Viren zu pr&uuml;fen.
<br><br>
<p align="justify"><font size="1" face="Arial" color="#808080">The present email addresses only the addressee which it targets and may contain confidential material that may be protected by the professional secret. The opinions reflected herein are not necessarily the one of the . If you are not the addressee, you have accidentally got this email and are not enabled to use, publish, forward, copy or print it in any way. Neither the , nor the sender (Oliver Roess) are liable for viruses, being your own responsibility to check this email and its attachments (0) for this purpose. 
<br><br><br></body>

</html>