]
Federico Bertola commented on DROOLS-775:
-----------------------------------------
After further investigation (profiling) I found that if I stub the
{{ClassObjectTypeConf#checkPropertyListenerSupport}} method (which uses reflection
internally) I experience a noticeable performance increase. The field
{{supportsPropertyListeners}} is not used anywhere else. There's something I'm
missing?
Performance degradation with objects with many properties in working
memory.
----------------------------------------------------------------------------
Key: DROOLS-775
URL:
https://issues.jboss.org/browse/DROOLS-775
Project: Drools
Issue Type: Bug
Components: core engine
Affects Versions: 6.0.0.Final, 6.1.0.Final, 6.2.0.Final
Environment: Ubuntu 14.10 x64, jdk 8
Reporter: Federico Bertola
Assignee: Mario Fusco
Labels: regression
Attachments: drools-test.zip
I experience some major performance degradation while migrating from drools 5.0.1 to 6.x.
I'm inserting objects with many properties into the working memory and firing some
very basic rules which will match against a very small subset of those properties. I
expected that the older version of Drools, which uses pure reflection, to be somewhat
slower than the newer, which uses some clever ASM optimization., but this is not the case.
I've also noticed that if the required properties are scattered across multiple level
of hierarchy, the performance issue will aggravate.
For example, after 100k iterations:
droosl 5.0.1
-- Meters ----------------------------------------------------------------------
org.acme.test.drools5.DroolsPerformance.analized
count = 100000
mean rate = 549.27 events/second
...
drools 6.2.0.Final
-- Meters ----------------------------------------------------------------------
org.acme.test.drools6.DroolsPerformance.analized
count = 100000
mean rate = 198.58 events/second
...