Martin Lichtin created AMQ-6239:
-----------------------------------
Summary: Performance issue in PrioritizedPendingListIterator
Key: AMQ-6239
URL: https://issues.apache.org/jira/browse/AMQ-6239
Project: ActiveMQ
Issue Type: Improvement
Components: Broker
Affects Versions: 5.12.2
Reporter: Martin Lichtin
Sending and consuming 5000 messages to/from a queue, one can see heavy CPU use
on the broker side (v 5.12.2).
Yourkit shows
PrioritizedPendingList$PrioritizedPendingListIterator.<init>
as a hot spot method. It calls ArrayList.add(Object) around 12 mio times.
Situation is that FilePendingMessageCursor.isEmpty() iterates over in-memory
messages and therefore (as it is a prioritized queue) uses
PrioritizedPendingListIterator which uses OrderedPendingList.getAsList() which
overall turns out to be an expensive method as it converts the self-managed
linked list to a Java ArrayList and then this list is filled into another
ArrayList managed by PrioritizedPendingListIterator.
PrioritizedPendingListIterator could be improved to walk the priority lists via
OrderedPendingList iterators, as these are implemented efficiently.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)