Hi Daniel,
I was reading the other day that a JVM
implementation does not necessarily have to run Java threads in different
Processes (taking advantage of multiple cores). If you saw a significant
speedup then I would assume your JVM does this. It is worth investigating
for your production deployment. I would think that recent JVMs on
modern operating systems would support this, but I also wouldn't leave
it up to chance.
This post seems to imply that the only
JVM/OS combinations that don't support native threads are Java 1.2 or Solaris:
http://forums.sun.com/thread.jspa?threadID=5330507
About StatefulKnowledgeSessions: You
should be able to run these in parallel no problem.
-Steve
rules-users-bounces@lists.jboss.org wrote on 05/11/2010
07:55:18 AM:
> From:
>
> djb <dbrownell83@hotmail.com>
>
> To:
>
> rules-users@lists.jboss.org
>
> Date:
>
> 05/11/2010 08:01 AM
>
> Subject:
>
> Re: [rules-users] Parallelization
>
> Sent by:
>
> rules-users-bounces@lists.jboss.org
>
>
> Hi Wolfgang,
>
> Ok, well I implemented my "option #2", which has cut it
down to 23ms, which
> is a good start. My timing is done by taking the time before,
and after,
> and dividing by the number of claims processed. (and averaging
over a few
> runs)
>
> I use one thread per StatefulKnowledgeSession... My machine has 2
cores, but
> it will eventually be running on an 8 core beast, so i reckon this
was a
> good improvement. I was just worried that I wouldn't be able
to
> simultaneously process multiple K-Sessions, but apparently, Drools
doesn't
> mind. I'm pretty sure any machine with multiple cores supports
parallel
> java threads, no?
>
>
>
> -----
> Regarding my Utilities method, eg. isWithinTimePeriod("20100308",
> "20090405", 1, "Y")
>
> I can get about 5ms off by commenting out the eval, so it's not going
to be
> a big jump even if I fix it, but, well, I am using yyyyMMdd Strings,
which
> in the method, I sub-stringed, converted to ints, instantiated DateMidnight
> objects, and compared using Joda-time daysBetween/monthsBetween/yearsBetween
> methods.
>
> My thought was that pre-converting to ints would help, so that each
> ClaimLine has year/month/day int variables, and pass them in instead.
(i.e.,
> Saves 3 String.substring()'s, and 3 Integer.parseInt()). but
that actually
> slowed it down a few milliseconds. (Maybe passing 6 params instead
of 2?!)
>
> I'm comparing two dates by an arbitrary period, like "2 days"
or "1 month",
> and need the framework of the Gregorian Calendar. So, I don't
think I can
> do anything about this. 2 months is never guaranteed to be a
set number of
> milliseconds. It all depends on the claim date, which is fact
data, and
> therefore variable.
>
> Regards,
> Daniel
>
> --
> View this message in context: http://drools-java-rules-engine.
> 46999.n3.nabble.com/Parallelization-tp809341p809753.html
> Sent from the Drools - User mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users