[rules-users] Re: Drools performance issue
jayadevan.m at gmail.com
jayadevan.m at gmail.com
Mon Jun 1 09:21:44 EDT 2009
Thanks W,
I tried it out ,But didn't get any performance improvement :(
The issue might be that I am inserting too many objects into working memory
jayadevan
On Jun 1, 2009 3:36pm, Wolfgang Laun <wolfgang.laun at gmail.com> wrote:
> The first two patterns pair each driver assignment with each trip -
> which is quite a lot of work to do. (The infix "and" between the 2nd
> and 3rd pattern doesn't change this.) Also, the field restriction
> "tripId in ($tid)" is not the most efficient way.
> Try this:
> rule "Assignment Check"
> when
> $creVo: DriverAssignVO($drId: driverId, $tid1: tripId)
> $creVo: DriverAssignVO(driverId == $drId, $tid2: tripId != $tid1)
> $trAsgn1: TripVO( tripId == $tid1, $startDtmUtc: startDtmUtc,
> $endDtmUtc: endDtmUtc)
> $trAsgn2: TripVO( tripId == $tid2,
> ((startDtmUtc >= $startDtmUtc && startDtmUtc
> (endDtmUtc >= $startDtmUtc && endDtmUtc
> then
> System.out.println("TRIP ID: " + $crvo.getTripId());
> end
> Here the first two patterns produce all pairs of assignments of a
> single driver, and the remainder checks for overlaps.
> You'll also find that this produces two symmetric firings for each
> overlap. It might be possible to avoid this by using "$tid2: tripId >
> $tid1" in the second pattern, the id's data type permitting.
> -W
> 2009/6/1 Mark Proctor mproctor at redhat.com>:
> > Please send these emails to the user list (in cc) so everyone can help,
> not
> > directly to me.
> >
> > Mark
> > jayadevan m wrote:
> >
> > Hi
> >
> > We have one performance(memory) issue in drools-5
> >
> > Our Scenario
> >
> > We have 3 entities
> >
> > Trip - Entity representing details about trip
> >
> > Driver - Entity for driver , it contain details about driver
> >
> > Assignments - details about each assignments (one driver may assigned to
> > many trip)
> >
> > The rule is to find ,"Find overlapping between trip assignments"
> >
> > For Implementing this we take the Trip ,Driver And Assignments entities
> > from Data base and put it into working memory
> >
> > For Small number of records this rule work well ,
> >
> > But we want to check it against 15000 driver ,331176 assignments and
> 12745
> > trips
> >
> > In that case it take huge amount of time for execution (rule firing )
> >
> >
> >
> > Rule is
> >
> > rule "Assignment Check"
> >
> > when
> >
> > $creVo: DriverAssignVO($drId: driverId ,$tid: tripId);
> >
> > $tripAssignment: TripVO(
> >
> > $tpid: tripId,
> >
> > $startDtmUtc: startDtmUtc,
> >
> > $endDtmUtc: endDtmUtc)
> >
> > and
> >
> > $trvo: TripVO(
> >
> > tripId != $tpid,
> >
> > tripId in ($tid),
> >
> > ((startDtmUtc >= $startDtmUtc && startDtmUtc
> > $endDtmUtc) ||
> >
> > (endDtmUtc >= $startDtmUtc && endDtmUtc
> > $endDtmUtc)));
> >
> > $crvo: DriverAssignVO($drvrId: driverId , driverId == $drId ,
> > tripId != $tid, tripId == $tpid)
> >
> > then
> >
> > System.out.println("TRIP ID: " + $crvo.getTripId());
> >
> > end
> >
> >
> >
> > thanks and regards
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090601/4026544b/attachment.html
More information about the rules-users
mailing list