Skip to content

What is the meaning of the numbers outputted by a benchmark? #2952

Open
@ben-strasser

Description

Thank you for this nice library. I'm having trouble understanding what exactly the numbers outputted in a benchmark mean. Let's take the example of https://github.com/catchorg/Catch2/blob/devel/docs/benchmarks.md which states:

benchmark name                                  samples       iterations    est run time
                                                mean          low mean      high mean
                                                std dev       low std dev   high std dev
-------------------------------------------------------------------------------
Fibonacci 35                                            100       145169   87.1014 ms
                                                     468 ns       464 ns       473 ns
                                                      21 ns        15 ns        34 ns

I think it would be really helpful, if that page described in detail for each of the nine numbers how they were computed. I can write a paragraph once I understood them myself but I was not able to do so using a Google search or by reading the code, which I found really hard to follow.

I guess the number of "samples" (100) and the number of "iterations" (145169) somehow combine with the "est run time" (87.1014 ms) to get the "mean" (468 ns). I do not see how. I tried

(87.1014 * 10**6)/(100*145169) = 6.0 !=  468
(87.1014 * 10**6)/(145169) = 600.0 !=  468

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions