#include <bslmt_throughputbenchmarkresult.h>
|
| | BSLMF_NESTED_TRAIT_DECLARATION (ThroughputBenchmarkResult, bslma::UsesBslmaAllocator) |
| |
| | ThroughputBenchmarkResult (bslma::Allocator *basicAllocator=0) |
| |
| | ThroughputBenchmarkResult (int numSamples, const bsl::vector< int > &threadGroupSizes, bslma::Allocator *basicAllocator=0) |
| |
| | ThroughputBenchmarkResult (const ThroughputBenchmarkResult &original, bslma::Allocator *basicAllocator=0) |
| |
| | ThroughputBenchmarkResult (bslmf::MovableRef< ThroughputBenchmarkResult > original) BSLS_KEYWORD_NOEXCEPT |
| |
| | ThroughputBenchmarkResult (bslmf::MovableRef< ThroughputBenchmarkResult > original, bslma::Allocator *basicAllocator) |
| |
| | ~ThroughputBenchmarkResult ()=default |
| | Destroy this object.
|
| |
| ThroughputBenchmarkResult & | operator= (const ThroughputBenchmarkResult &rhs) |
| |
| ThroughputBenchmarkResult & | operator= (bslmf::MovableRef< ThroughputBenchmarkResult > rhs) |
| |
| void | initialize (int numSamples, const bsl::vector< int > &threadGroupSizes) |
| |
| void | setThroughput (int threadGroupIndex, int threadIndex, int sampleIndex, double value) |
| |
| int | numSamples () const |
| | Return the number of test samples.
|
| |
| int | numThreadGroups () const |
| | Return the number of thread groups.
|
| |
| int | numThreads (int threadGroupIndex) const |
| |
| int | totalNumThreads () const |
| | Return the total number of threads.
|
| |
| double | getValue (int threadGroupIndex, int threadIndex, int sampleIndex) const |
| |
| void | getMedian (double *median, int threadGroupIndex) const |
| |
| void | getPercentile (double *percentile, double percentage, int threadGroupIndex) const |
| |
| void | getPercentiles (bsl::vector< double > *percentiles, int threadGroupIndex) const |
| |
| void | getThreadPercentiles (bsl::vector< bsl::vector< double > > *percentiles, int threadGroupIndex) const |
| |
| bslma::Allocator * | allocator () const |
| | Return the allocator used by this object.
|
| |
This class provides support for output of multi-threaded performance benchmark results. The results are counts of work done during the benchmark time period divided by the time period.
See bslmt_throughputbenchmarkresult
◆ DoubleVector
◆ Int64
◆ ThroughputBenchmarkResult() [1/5]
| bslmt::ThroughputBenchmarkResult::ThroughputBenchmarkResult |
( |
bslma::Allocator * |
basicAllocator = 0 | ) |
|
|
explicit |
Create an empty ThroughputBenchmarkResult object. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used. Note that this object has to be initialized before it can be used.
◆ ThroughputBenchmarkResult() [2/5]
| bslmt::ThroughputBenchmarkResult::ThroughputBenchmarkResult |
( |
int |
numSamples, |
|
|
const bsl::vector< int > & |
threadGroupSizes, |
|
|
bslma::Allocator * |
basicAllocator = 0 |
|
) |
| |
Create a ThroughputBenchmarkResult object with the specified numSamples the number of samples in the benchmark, and the specified threadGroupSizes, the number of threads in each of the thread groups. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used. The behavior is undefined unless 0 < numSamples, 0 < threadGroupSizes.size(), and 0 < threadGroupSizes[N] for all valid N.
◆ ThroughputBenchmarkResult() [3/5]
Create a ThroughputBenchmarkResult object having the value of the specified original. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used.
◆ ThroughputBenchmarkResult() [4/5]
Create a ThroughputBenchmarkResult object having the same value and the same allocator as the specified original object. The value of original becomes unspecified but valid, and its allocator remains unchanged.
◆ ThroughputBenchmarkResult() [5/5]
Create a ThroughputBenchmarkResult object having the same value as the specified original object, using the specified basicAllocator to supply memory. If basicAllocator is 0, the currently installed default allocator is used. The allocator of original remains unchanged. If original and the newly created object have the same allocator then the value of original becomes unspecified but valid, and no exceptions will be thrown; otherwise original is unchanged (and an exception may be thrown).
◆ ~ThroughputBenchmarkResult()
| bslmt::ThroughputBenchmarkResult::~ThroughputBenchmarkResult |
( |
| ) |
|
|
default |
◆ allocator()
◆ BSLMF_NESTED_TRAIT_DECLARATION()
◆ getMedian()
| void bslmt::ThroughputBenchmarkResult::getMedian |
( |
double * |
median, |
|
|
int |
threadGroupIndex |
|
) |
| const |
Load into the specified median the median throughput (count / second) of the work done by all the threads in the specified threadGroupIndex. The behavior is undefined unless 0 <= threadGroupIndex < numThreadGroups.
◆ getPercentile()
| void bslmt::ThroughputBenchmarkResult::getPercentile |
( |
double * |
percentile, |
|
|
double |
percentage, |
|
|
int |
threadGroupIndex |
|
) |
| const |
Load into the specified percentile the specified percentage throughput (count / second) of the work done by all the threads in the specified threadGroupIndex. A percentage of 0.0 is the minimum, and a percentage of 1.0 is the maximum. The behavior is undefined unless 0 <= threadGroupIndex < numThreadGroups and 0.0 <= percentage <= 1.0.
◆ getPercentiles()
| void bslmt::ThroughputBenchmarkResult::getPercentiles |
( |
bsl::vector< double > * |
percentiles, |
|
|
int |
threadGroupIndex |
|
) |
| const |
Load into the specified percentiles vector a uniform breakdown of percentage throughput (count / second) of the work done by all the threads in the specified threadGroupIndex. The size of percentiles controls how many percentages are provided. For example, a size of 5 will return the percentages 0, 0.25, 0.5, 0.75,
- The behavior is undefined unless
0 <= threadGroupIndex < numThreadGroups and 2 <= percentiles->size().
◆ getThreadPercentiles()
| void bslmt::ThroughputBenchmarkResult::getThreadPercentiles |
( |
bsl::vector< bsl::vector< double > > * |
percentiles, |
|
|
int |
threadGroupIndex |
|
) |
| const |
Load into the specified percentiles vector of vectors a uniform breakdown of percentage throughput (count / second) of the work done on the specified threadGroupIndex for each of the threads in it. The size of percentiles controls how many percentages are provided. For example, a size of 5 will return the percentages 0, 0.25, 0.5, 0.75, 1. The size of each of the vectors inside stats must be numThreads(threadGroupId). The behavior is undefined unless 0 <= threadGroupId < numThreadGroups, 2 <= percentiles.size(), and percentiles[N].size() == numThreads(threadGroupIndex) for all N.
◆ getValue()
| double bslmt::ThroughputBenchmarkResult::getValue |
( |
int |
threadGroupIndex, |
|
|
int |
threadIndex, |
|
|
int |
sampleIndex |
|
) |
| const |
|
inline |
Return the throughput of work done on the specified threadIndex thread, in the specified threadGroupIndex, and the specified sampleIndex sample. The behavior is undefined unless 0 <= threadIndex < numThreads(threadGroupIndex), 0 <= threadGroupIndex < numThreadGroups(), and 0 <= sampleIndex < numSamples().
◆ initialize()
| void bslmt::ThroughputBenchmarkResult::initialize |
( |
int |
numSamples, |
|
|
const bsl::vector< int > & |
threadGroupSizes |
|
) |
| |
Initialize a default constructed ThroughputBenchmarkResult object with the specified numSamples number of samples in the benchmark, and the specified threadGroupSizes, the number of threads in each of the thread groups. If any data was previously kept, it is lost. The behavior is undefined unless 0 < numSamples, 0 < threadGroupSizes.size(), and 0 < threadGroupSizes[N] for all valid N.
◆ numSamples()
| int bslmt::ThroughputBenchmarkResult::numSamples |
( |
| ) |
const |
|
inline |
◆ numThreadGroups()
| int bslmt::ThroughputBenchmarkResult::numThreadGroups |
( |
| ) |
const |
|
inline |
◆ numThreads()
| int bslmt::ThroughputBenchmarkResult::numThreads |
( |
int |
threadGroupIndex | ) |
const |
|
inline |
Return the number of threads in the specified threadGroupIdx. The behavior is undefined unless 0 <= threadGroupIndex < numThreadGroups().
◆ operator=() [1/2]
Assign to this object the value of the specified rhs object, and return a non-const reference to this object. The allocators of this object and rhs both remain unchanged. If rhs and this object have the same allocator then the value of rhs becomes unspecified but valid, and no exceptions will be thrown; otherwise rhs is unchanged (and an exception may be thrown).
◆ operator=() [2/2]
Assign to this object the value of the specified rhs benchmark result, and return a reference providing modifiable access to this object.
◆ setThroughput()
| void bslmt::ThroughputBenchmarkResult::setThroughput |
( |
int |
threadGroupIndex, |
|
|
int |
threadIndex, |
|
|
int |
sampleIndex, |
|
|
double |
value |
|
) |
| |
|
inline |
Set the throughput related to the specified threadIndex thread, in the specified threadGroupIndex, and the specified sampleIndex to the specified value. The behavior is undefined unless 0 <= value, 0 <= threadIndex < numThreads(threadGroupIndex), 0 <= threadGroupIndex < numThreadGroups(), and 0 <= sampleIndex < numSamples().
◆ totalNumThreads()
| int bslmt::ThroughputBenchmarkResult::totalNumThreads |
( |
| ) |
const |
|
inline |
◆ ThroughputBenchmarkResult_TestUtil
The documentation for this class was generated from the following file: