jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From FSchumacher <>
Subject [GitHub] jmeter pull request #380: Hdrhistogram
Date Sat, 31 Mar 2018 15:16:36 GMT
GitHub user FSchumacher opened a pull request:


    ## Description
    <!--- Provide a general summary of your changes in the Title above -->
    <!--- Describe your changes in detail here -->
    First try to replace percentile calculations with HdrHistogram.
    This is just to get an impression, what we can gain by using another implementation and
should not  be incorporated yet.
    ## Motivation and Context
    <!--- Why is this change required? What problem does it solve? -->
    <!--- If it fixes an open issue, please link to the issue here. -->
    Currently we have two different algorithms for calculating percentiles. The results differ
and the algorithm is not documented. This should be changed (although it is not addressed
yet by this pr).
    Another point is the efficiency of the used algorithms. As the swing gui will be refreshed
every 300 ms (or so), when data arrives and the mean, average and other percentiles are re-caculated
on every refresh, the used algorithm should be very efficient. The currently used one is iterating
over every bucket to calculate the mean (and std deviation).
    The proposed implementation uses a different approach and doesn't need to iterate to calculate
the mean, etc. The percentiles are calculated by HdrHistogram and the locking has been simplified
by transferring all logic that modifies the data into the awt thread.
    In my tests the samples per second went up from 200 per second over 1.400 per second.
    ## How Has This Been Tested?
    <!--- Please describe in detail how you tested your changes. -->
    <!--- Include details of your testing environment, tests ran to see how -->
    <!--- your change affects other areas of the code, etc. -->
    Tested by using a simple JSR223 Sampler that slept a bit (and by a JSR223 Sampler, that
pretended to sleep a bit)
    ## Screenshots (if appropriate):
    ## Types of changes
    <!--- What types of changes does your code introduce? Delete as appropriate -->
    - Bug fix (non-breaking change which fixes an issue)
    - New feature (non-breaking change which adds functionality)
    - Breaking change (fix or feature that would cause existing functionality to not work
as expected)
    A bit of everything
    ## Checklist:
    <!--- Go over all the following points, and put an `x` in all the boxes that apply.
    <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help!
    - [ ] My code follows the [code style][style-guide] of this project.
    - [ ] I have updated the documentation accordingly.

You can merge this pull request into a Git repository by running:

    $ git pull hdrhistogram

Alternatively you can review and apply these changes as the patch at:

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #380
commit 4280996464a4adbed427672f7c6f0eda82c020e1
Author: fschumacher <felix.schumacher@...>
Date:   2018-03-30T17:17:19Z

    HdrHistogram, first try

commit 492a869b705d36d6421d42899fdc73a2d052b88c
Author: fschumacher <felix.schumacher@...>
Date:   2018-03-31T07:05:19Z

    Use more efficient algorithm to calculate mean and stddev



View raw message