Bug 47223 - Slow Aggregate Report Performance / org.apache.jorphan.math.StatCalculator
Slow Aggregate Report Performance / org.apache.jorphan.math.StatCalculator
Status: RESOLVED FIXED
Product: JMeter
Classification: Unclassified
Component: Main
2.3.2
PC Linux
: P2 normal with 1 vote (vote)
: ---
Assigned To: JMeter issues mailing list
:
Depends on:
Blocks:
  Show dependency tree
 
Reported: 2009-05-19 15:38 UTC by Jared Sulem
Modified: 2009-08-18 09:23 UTC (History)
0 users



Attachments
Use LinkedList instead of ArrayList in org.apache.jorphan.math.StatCalculator (657 bytes, patch)
2009-05-19 15:38 UTC, Jared Sulem
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Jared Sulem 2009-05-19 15:38:20 UTC
Created attachment 23695 [details]
Use LinkedList instead of ArrayList in org.apache.jorphan.math.StatCalculator

JMeter slows to a crawl and eventually becomes completely unresponsive as it accumulates samples using the Aggregate Report.

The issue appears to be that the StatCalculator uses an ArrayList to store the samples and inserts them within the list to keep the list sorted.  ArrayList has O(n) performance for insertions at arbitary locations in the array (n is the current size of the list).  This means that over the entire JMeter run performance of JMeter with an AggregateReport is at least O(n-squared).

Changing the ArrayList to a LinkedList significantly improves the performance.  Although a LinkedList is still O(n) for sorted insertions (and for operations such as reading the median and 90% values), the constants for these operations are significantly lower than that of inserting into an ArrayList (probably because the LinkedList never needs to copy the whole array in order to insert an item).

After this change JMeter becomes usable for collecting tens of thousands of samples, whereas before it would bring my system to a complete halt.

I've attached a small patch to the bug that changes the ArrayList into a LinkedList in StatCalculator.
Comment 1 Sebb 2009-08-18 09:23:40 UTC
Thanks for the report and patch. Fixed in SVN:

URL: http://svn.apache.org/viewvc?rev=805481&view=rev
Log:
Bug 47223 - Slow Aggregate Report Performance (StatCalculator)