You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Martin Lichtin (JIRA)" <ji...@apache.org> on 2016/04/10 21:20:25 UTC

[jira] [Created] (AMQ-6239) Performance issue in PrioritizedPendingListIterator

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)