I've observed a
sizable (25%) performance degradation between the 5.0.1
and 5.1.0 releases. I've attached a sample project that
tests the performance of matching nested objects. (ANd
compares direct reference matching and the performance
pitfalls of "from," but that's beside the current point.)
If you switch the pom.xml from using 5.0.1 to 5.1.0
for the drools dependencies you'll see 25% longer
execution times on the tests. (mvn test)
Here's the test output:
5.0.1
reference.drl Count: 2000
reference.drl Time: 267ms
reference.drl Time per element: 0.1335ms
BAR Duplicates: 780
FOO Duplicates: 880
reference.drl Count: 20000
reference.drl Time: 1249ms
reference.drl Time per element: 0.06245ms
BAR Duplicates: 7702
FOO Duplicates: 8040
from.drl Count: 200
from.drl Time: 1139ms
from.drl Time per element: 5.695ms
BAR Duplicates: 112
FOO Duplicates: 102
reference.drl Count: 200
reference.drl Time: 5ms
reference.drl Time per element: 0.025ms
BAR Duplicates: 86
FOO Duplicates: 60
5.1.0
reference.drl Count: 2000
reference.drl Time: 300ms
reference.drl Time per element: 0.15ms
BAR Duplicates: 788
FOO Duplicates: 820
reference.drl Count: 20000
reference.drl Time: 1564ms
reference.drl Time per element: 0.0782ms
BAR Duplicates: 8142
FOO Duplicates: 7960
from.drl Count: 200
from.drl Time: 3543ms
from.drl Time per element: 17.715ms
BAR Duplicates: 68
FOO Duplicates: 90
reference.drl Count: 200
reference.drl Time: 13ms
reference.drl Time per element: 0.065ms
BAR Duplicates: 84
FOO Duplicates: 74
On the most taxing test (20k objects) 5.0.1
took 1249ms while 5.1.0 took 1564ms, and for larger
tests the effect is more pronounced. This is primarily
a test of == on object references.
GreG
|