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(a)lists.jboss.org wrote on 05/11/2010 07:55:18 AM:
From:
djb <dbrownell83(a)hotmail.com>
To:
rules-users(a)lists.jboss.org
Date:
05/11/2010 08:01 AM
Subject:
Re: [rules-users] Parallelization
Sent by:
rules-users-bounces(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users