MetricCapture


@ExperimentalBenchmarkConfigApi
abstract class MetricCapture

Known direct subclasses
TimeCapture

Time metric, which reports time in nanos, based on the time passed to captureStop.


Microbenchmark metric.

Note that the API is designed around low overhead, even in the case of multiple submetrics (such as cpu perf event counters) that must be started/stopped together for efficiency.

This class may be initialized on a different thread from where measurement occurs, but all capture methods must be invoked from the same thread.

Summary

Public constructors

Public functions

abstract Unit

Pause data collection.

abstract Unit

Resume data collection

abstract Unit
captureStart(timeNs: Long)

Starts collecting data for a run.

abstract Unit
captureStop(timeNs: Long, output: LongArray, offset: Int)

Mark the end of a run, and store offset metrics in the output array, per sub metric.

open operator Boolean
equals(other: Any?)
open Int

Public properties

List<String>

List of names of metrics produced by this MetricCapture.

Public constructors

MetricCapture

Added in 1.2.0
MetricCapture(names: List<String>)

Public functions

capturePaused

Added in 1.2.0
abstract fun capturePaused(): Unit

Pause data collection.

captureResumed

Added in 1.2.0
abstract fun captureResumed(): Unit

Resume data collection

captureStart

Added in 1.2.0
abstract fun captureStart(timeNs: Long): Unit

Starts collecting data for a run.

Called at the start of each run.

Parameters
timeNs: Long

Current time, just before starting metrics. Can be used directly to drive a timing metric produced.

captureStop

Added in 1.2.0
abstract fun captureStop(timeNs: Long, output: LongArray, offset: Int): Unit

Mark the end of a run, and store offset metrics in the output array, per sub metric.

To output values, store them in the output array offset by both the parameter offset, and their submetric index, for example:

class MyMetricCapture("firstSubMetricName", "secondSubMetricName") {
//...
override fun captureStop(timeNs: Long, output: LongArray, offset: Int) {
output[offset + 0] = firstSubMetricValue
output[offset + 1] = secondSubMetricValue
}
}
Parameters
timeNs: Long

Time of metric capture start, in monotonic time (java.lang.System.nanoTime)

output: LongArray

LongArray sized to hold all simultaneous sub metric outputs, use offset as the initial position in output to start writing submetrics.

offset: Int

Offset into the output array to start writing sub metrics.

equals

open operator fun equals(other: Any?): Boolean

hashCode

open fun hashCode(): Int

Public properties

names

Added in 1.2.0
val namesList<String>

List of names of metrics produced by this MetricCapture.

The length of this list defines how many metrics will be produced by captureStart and captureStop.