2009/9/17 Mauricio Salatino <[email protected]> > First of all you can try adding: > $ae1 :Event(symbol == 1, $Pr1 : price) and > $ce1 :Event(this != $ae1, symbol == 1, price > ($Pr1/1.2), this after $ae1 > ) > > That will avoid the cross product. > Post again the result with that.
Hi Mauricio, Your advice helped a bit, but not very much (please see below). I also modified the test for Drools to show the event/sec throughput using Timer instead of fixed number of events per time. I think it's more helpful this way. New run: No. of events/second is: 7135. No. of events/second is: 8358. No. of events/second is: 8218. No. of events in total is: 23715. No. of total events/second is: 7905.333333333333 Memory used:16872192 Old rule file: No. of events/second is: 7441. No. of events/second is: 8133. No. of events/second is: 7688. No. of events in total is: 23263. No. of total events/second is: 7754.666666666667 Memory used:16892760 Paul. > 2009/9/17 PF <[email protected]> > >> Hi guys, >> We made some experiments with Drools Fusion and we wonder if there is any >> way to speed it up. In our experiments, we detected complex events in >> streams of stock tickers and got times significantly slower with Drools than >> with other CEP systems (and also higher memory consumption in the same order >> of magnitude): >> Number of events Drools 5.0 Fusion Esper 3.1.0 Etalis with SWI Prolog >> Etalis with Yap Prolog >> 10000 1179 453 328 265 (time in miliseconds to process the stream of >> events) >> 20000 2359 828 701 531 >> 30000 3538 1141 1023 780 >> 40000 4718 1500 1356 1078 >> 50000 5897 1813 1702 1329 >> >> I can provide some of our code if someone needs it (beside what I pasted >> below). >> Please tell me if you know any obvious optimizations? Or if you think this >> is due to Java (vs. C in other implementations), or any other reasons. >> Thank you, regards, >> Paul Fodor >> Our program has 5 rules to detect complex events: >> fusion.drl: >> rule "experiment A -Rule 0/0" >> when >> $ae1 :Event(symbol == 1, $Pr1 : price) and >> $ce1 :Event(this after $ae1 , symbol == 1, price > ($Pr1/1.2) ) >> then >> //System.out.println("Ce1 fired !"); >> end >> rule "experiment A -Rule 0/1" >> when >> ( >> $ae2 :Event(symbol == 2,$Pr2 : price) and >> $ce2 : Event(this after $ae2 , symbol == 2,price > ($Pr2/1.2) ) >> ) >> then >> //System.out.println("Ce2 fired !"); >> end >> rule "experiment A -Rule1" >> when >> ( >> $ae1 :Event(symbol == 1, $Pr1 : price) and >> $ce1 :Event(this after $ae1 , symbol == 1, price > ($Pr1/1.2) ) >> ) >> or >> ( >> $ae2 :Event(symbol == 2,$Pr2 : price) and >> $ce2 : Event(this after $ae2 , symbol == 2,price > ($Pr2/1.2) ) >> ) >> then >> //System.out.println("Ce3 fired !"); >> end >> >> rule "experiment A -Rule4" >> when >> ( >> $ae1 :Event(symbol == 1, $Pr1 : price) and >> $ce1 :Event(this after $ae1 , symbol == 1, price > ($Pr1/1.2) ) >> ) >> and >> ( >> $ae2 :Event(symbol == 2,$Pr2 : price) and >> $ce2 : Event(this after $ae2 , symbol == 2,price > ($Pr2/1.2) , this >> after[0,20m] $ce1 ) >> ) >> then >> //System.out.println("Ce4 fired !"); >> end >> >> rule "experiment A -Rule5" >> when >> ( >> $ae1 :Event(symbol == 1, $Pr1 : price) and >> $ce1 :Event(this after $ae1 , symbol == 1, price > ($Pr1/1.2)) >> ) >> and >> ( >> $ae2 :Event(symbol == 2,$Pr2 : price) and >> $ce2 : Event(this after $ae2 , symbol == 2,price > ($Pr2/1.2) , this >> overlaps $ce1) >> ) >> then >> //System.out.println("Ce5 fired !"); >> end >> >> We have an Event class for events with its parameters and an EventStream >> class to fire the events: >> EventStream.java: >> ... >> import org.drools.runtime.StatefulKnowledgeSession; >> public class EventStream { >> public StatefulKnowledgeSession get_working_session() { return ksession;} >> ... >> void generateEventStream(double duration, double p) { >> ... >> //Drools >> Event temp = new Event(symbol,currValue); >> ksession.insert(temp); >> ... >> } >> } >> >> >> _______________________________________________ >> rules-users mailing list >> [email protected] >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> > > > -- > - http://salaboy.wordpress.com > - http://www.jbug.com.ar > - Salatino "Salaboy" Mauricio - > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > >
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
