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)

Reply via email to