laune wrote
It seems that the problems reported by the OP are mostly (if not all)
related to building KnowledgePackages from DRL files. Drools has been
through several 5.x versions with (among others) many extensions to
the DRL language, so some increase in resource consumption is to be
expected.
Most production scenarios, however, use the recommended practice of
loading compiled KnowledgePackages that were serialized in a separate
runs.
Does the reported increase in execution times ("2-3 times slower")
relate to rule execution only, without compiling? If I understand the
OPs statement correctly, this increase was observed after the patch
reducing PermGen space.
-W
Hi there,
Actually the tests are the same on both versions, and you are right they
include the compilation of the rule set. In production however, we use the
technique you mentioned.
However, difference in compilation times between both versions is acceptable
for us (about 30-40% slower in big sets), if I drill down a bit on the
execution part however I see that it can get to 6 times slower at times.
I've done comparative analysis with YourKit lately on both versions to get a
grasp of where the time was spent. I can see the JIT part with the
ClassGenerator come into place, by that's not what baffles me: I see a lot
more DefaultConsequenceInvoker.evaluate() calls on the stack in 5.4.0 than
4.0.7 and that's where most of the time is spent
Does that make any sense? Are consequence evaluated even if rules are not
fired ? Or is the way the rule is written that causes this (no-loop
statements, ...) ?
Any way I can deactivate the JIT behavior to have a more solid ground for
comparison?
More questions than answers I'm afraid, hoping to get to the bottom of this
:-)
--
View this message in context:
http://drools.46999.n3.nabble.com/Migrating-from-4-0-7-to-5-4-0-Final-tp4...
Sent from the Drools: User forum mailing list archive at
Nabble.com.