[
https://jira.jboss.org/jira/browse/BPEL-311?page=com.atlassian.jira.plugi...
]
Aleksander Adamowski updated BPEL-311:
--------------------------------------
Attachment: jbpm-bpel-CompositeActivity-variableDefinitionCache_HashMap.patch
A proof of concept patch.
This patch enables caching of VariableDefinitions. It has cut a single process
execution's JVM time by 20% for us, as indicated by JProfiler.
Note that I've used a ConcurrentHashMap, which requires Java 1.5. This is because
I'm not certain whether findVariable can be called concurrently on the same
CompositeActivity. Feel free to change it to ordinary HashMap if that won't cause
problems.
However, the patch needs verifying for correctness. Is it OK to cache VariableDefinitions,
or can they get stale over time?
What will happen on hot redeployment of BPEL process definition?
Will CompositeActivity instances be dropped together with their VariableDefinition
caches?
Performance improvement: Find a way to reduce number of
org.jbpm.bpel.graph.def.CompositeActivity.findVariable() calls
----------------------------------------------------------------------------------------------------------------------
Key: BPEL-311
URL:
https://jira.jboss.org/jira/browse/BPEL-311
Project: jBPM BPEL
Issue Type: Task
Security Level: Public(Everyone can see)
Components: Engine
Affects Versions: jBPM BPEL 1.1.1
Reporter: Aleksander Adamowski
Assignee: Alejandro Guizar
Attachments: jbpm-bpel-CompositeActivity-variableDefinitionCache_HashMap.patch,
org.jbpm.bpel.graph.def.CompositeActivity.findVariable.Call_graph.single_operation-expanded.png
According to our profiling data, during a single invocation of a relatively simple
business process (cannot post it here for confidentiality reasons), jBPM-BPEL performs an
unreasonable number of findVariable() calls.
Using JProfiler, we've recorded almost 150000 findVariable() calls for a single
process execution (the process definition contains only 31 bpws:variable elements
collectively).
I suspect that there's some algorithm which runs in exponential time with respect to
the number of variables or activities. Maybe adding some form of variable caching could
enable dramatic performance improvements?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira