On 11/05/2010 13:55, djb wrote:
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?
multiple ksessions running in different threads all sharing the same
kbase is perfectively acceptable, it was designed that way.
Mark
-----
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