[ 
https://issues.apache.org/jira/browse/AMQ-6239?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15234955#comment-15234955
 ] 

Christopher L. Shannon commented on AMQ-6239:
---------------------------------------------

Thanks for the patch.  This makes a lot of sense to me, no real reason I can 
see to create an array list when we can just use iterators.  The only thing 
would be is if for some reason we wanted the iterator to not see future 
modifications. (since items are copied into lists, any future adds or removes 
while using the iterator wouldn't be seen).  What do you think [~tabish121]?

> 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
>         Attachments: AMQ-6239-yourkit-1.jpg, PrioritizedPendingList.java.patch
>
>
> 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