[
https://issues.jboss.org/browse/JBTM-2209?page=com.atlassian.jira.plugin....
]
Michael Musgrove commented on JBTM-2209:
----------------------------------------
OK I have added a bit of asbestos to the fireguard ;-) and created 2 JMH benchmarks for
comparing the use of Stack versus Deque in ThreadActionData. My findings are:
* with benchmark 1 Deque gives an 3.8% (5.8%) improvement using 1 (10) threads
* with benchmark 2 Deque gives an 3.8% (4.6%) improvement using 1 (10) threads
I ran each benchmark on my laptop for 5 mins (running each test twice using either 1 or 10
threads to do the work on my quad core laptop (with a 1s warmup). I watched the CPU usage
to ensure that it was roughly constant (100% for the 1 thread test and about 400% for the
10 thread test).
I think this is good enough to accept the PR.
The actual benchmark is:
https://github.com/mmusgrov/performance/blob/JBTM-1453/narayana/ArjunaCor...
In more detail:
Benchmark 1: com.hp.mwtests.ts.arjuna.atomicaction.CheckedActionTest.testCheckedAction:
Start 10 AtomicActions and for each action add a synchronization and 5 child threads and
then suspend the action. Then, for each action resume it, remove its child threads and
commit it.
Benchmark 2: com.hp.mwtests.ts.arjuna.atomicaction.CheckedActionTest.testThreadActionData:
Start 2 AtomicActions and manipulate their action hierarchy using currentAction(),
restoreActions, popAction and purgeActions
{quote}
Test 1 (Stack using 1 thread for 300s): 45423 ops/s
Test 1 (Stack using 10 threads for 300s): 108201 ops/s
Test 2 (Stack using 1 thread for 300s): 651056 ops/s
Test 2 (Stack using 10 threads for 300s): 1443719 ops/s
Test 1 (Deque using 1 thread for 300s): 47200 ops/s
Test 1 (Deque using 10 threads for 300s): 114613 ops/s
Test 2 (Deque using 1 thread for 300s): 676561 ops/s
Test 2 (Deque using 10 threads for 300s): 1511950 ops/s
{quote}
Note I cherry picked Jespers Deque implementation on master (5.0.4.Final-SNAPSHOT todays
version) and for the Stack implementation I used 5.0.3.Final-SNAPSHOT (the one just before
it was tagged).
Use Deque for ThreadActionData
------------------------------
Key: JBTM-2209
URL:
https://issues.jboss.org/browse/JBTM-2209
Project: JBoss Transaction Manager
Issue Type: Sub-task
Components: Transaction Core
Reporter: Jesper Pedersen
Assignee: Michael Musgrove
Attachments: Test.java
Note, there are other usages of java.util.Stack in the code base that could be changed as
well
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)