[jboss-jira] [JBoss JIRA] Updated: (BPEL-311) Performance improvement: Find a way to reduce number of org.jbpm.bpel.graph.def.CompositeActivity.findVariable() calls
Aleksander Adamowski (JIRA)
jira-events at lists.jboss.org
Wed Oct 14 14:20:06 EDT 2009
[ https://jira.jboss.org/jira/browse/BPEL-311?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
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
More information about the jboss-jira
mailing list