---
title: "BenchRow"
sidebar_label: "BenchRow"
description: "Kotlin binding reference: BenchRow."
---

<!-- Generated by tools/api_reference/generate_api_docs.py. Do not edit. -->

//[clika-runtime](../../../index.md)/[io.clika.modelverse](../index.md)/[BenchRow](index.md)

# BenchRow

[common]\
data class [BenchRow](index.md)(val isl: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val osl: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val lateIsl: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val concurrency: [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html), val status: [BenchRowStatus](../BenchRowStatus/index.md), val reason: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html), val notes: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html), val firstCallMs: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val ttftMs: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val lateTtftMs: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val prefillTokS: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val prefillChunkMsP50: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val prefillChunkMsMax: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val itlP50Ms: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val itlP99Ms: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val itlMaxMs: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val decodeTokS: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val speedupVsC1: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val batchingEfficiency: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), val effectiveIsl: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val admittedTok: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val retires: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val peakActiveBytes: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val numAllocs: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val numInflightParkWaits: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val acceptedPredictionTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val rejectedPredictionTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val speculativeSteps: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), val cells: [Map](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html)&lt;[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html), [Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html)?&gt;)

One row of a bench report, typed: one (cell, concurrency) of the sweep. [status](status.md) says what the row is; the metrics of a row that is not [BenchRowStatus.OK](../BenchRowStatus/OK/index.md) are zeros, never measurements, and [reason](reason.md) says why in the library's words. The times are milliseconds, the rates tokens per second. [cells](cells.md) carries every column of the row as the table holds it, by the names of [BenchColumns](../BenchColumns/index.md): a `Long` for an integer column, a `Double` for a float one, a `String` for a text one, null for an empty cell; a column a later library adds is there before it has a typed field. The rows are read off [BenchReport.table](../BenchReport/table.md) once, so a row outlives the report's close.

## Constructors

| | |
|---|---|
| [BenchRow](BenchRow.md) | [common]<br>constructor(isl: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), osl: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), lateIsl: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), concurrency: [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html), status: [BenchRowStatus](../BenchRowStatus/index.md), reason: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html), notes: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html), firstCallMs: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), ttftMs: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), lateTtftMs: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), prefillTokS: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), prefillChunkMsP50: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), prefillChunkMsMax: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), itlP50Ms: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), itlP99Ms: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), itlMaxMs: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), decodeTokS: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), speedupVsC1: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), batchingEfficiency: [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html), effectiveIsl: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), admittedTok: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), retires: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), peakActiveBytes: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), numAllocs: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), numInflightParkWaits: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), acceptedPredictionTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), rejectedPredictionTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), speculativeSteps: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html), cells: [Map](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html)&lt;[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html), [Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html)?&gt;) |

## Properties

| Name | Summary |
|---|---|
| [acceptedPredictionTokens](acceptedPredictionTokens.md) | [common]<br>val [acceptedPredictionTokens](acceptedPredictionTokens.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)<br>The prompt-lookup tally over the row's measured iterations; 0 with [BenchOptions.promptLookupNumTokens](../BenchOptions/promptLookupNumTokens.md) 0. |
| [admittedTok](admittedTok.md) | [common]<br>val [admittedTok](admittedTok.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)<br>The row's paged prefix-cache traffic: tokens admitted from the cache, and histories retired into it; 0 on a continuous-mode row. |
| [batchingEfficiency](batchingEfficiency.md) | [common]<br>val [batchingEfficiency](batchingEfficiency.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>[speedupVsC1](speedupVsC1.md) over [concurrency](concurrency.md); 1 is linear batching. |
| [cells](cells.md) | [common]<br>val [cells](cells.md): [Map](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html)&lt;[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html), [Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html)?&gt; |
| [concurrency](concurrency.md) | [common]<br>val [concurrency](concurrency.md): [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)<br>The sessions decoding at once. |
| [decodeTokS](decodeTokS.md) | [common]<br>val [decodeTokS](decodeTokS.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>Aggregate generation rate over the token-generation window. |
| [effectiveIsl](effectiveIsl.md) | [common]<br>val [effectiveIsl](effectiveIsl.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)<br>The prompt tokens the prefill actually ingested; equals [isl](isl.md) on a text-only row. |
| [firstCallMs](firstCallMs.md) | [common]<br>val [firstCallMs](firstCallMs.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>The row's first full pass at its shape, after the global warm-up: what the first request at that shape costs; 0 with warmup 0. |
| [isl](isl.md) | [common]<br>val [isl](isl.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)<br>The cell's prompt tokens. |
| [itlMaxMs](itlMaxMs.md) | [common]<br>val [itlMaxMs](itlMaxMs.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>The longest decode-only gap a session saw. |
| [itlP50Ms](itlP50Ms.md) | [common]<br>val [itlP50Ms](itlP50Ms.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>Inter-token latency over decode-only gaps. |
| [itlP99Ms](itlP99Ms.md) | [common]<br>val [itlP99Ms](itlP99Ms.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html) |
| [lateIsl](lateIsl.md) | [common]<br>val [lateIsl](lateIsl.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)<br>The late prompt's tokens ([BenchCell.lateIsl](../BenchCell/lateIsl.md)); 0 on a row without one. |
| [lateTtftMs](lateTtftMs.md) | [common]<br>val [lateTtftMs](lateTtftMs.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>The late prompt's own time to first token; 0 on a row without one. |
| [notes](notes.md) | [common]<br>val [notes](notes.md): [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)<br>What an OK row measured beyond its numbers (its prompt protocol, the device's execution law); empty when there is nothing to state. |
| [numAllocs](numAllocs.md) | [common]<br>val [numAllocs](numAllocs.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) |
| [numInflightParkWaits](numInflightParkWaits.md) | [common]<br>val [numInflightParkWaits](numInflightParkWaits.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) |
| [osl](osl.md) | [common]<br>val [osl](osl.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)<br>The cell's decoded tokens. |
| [peakActiveBytes](peakActiveBytes.md) | [common]<br>val [peakActiveBytes](peakActiveBytes.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)<br>The model device's pool: its active high-water mark after the row (bytes), the row's allocations, and the allocations that waited for an in-flight chunk. |
| [prefillChunkMsMax](prefillChunkMsMax.md) | [common]<br>val [prefillChunkMsMax](prefillChunkMsMax.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html) |
| [prefillChunkMsP50](prefillChunkMsP50.md) | [common]<br>val [prefillChunkMsP50](prefillChunkMsP50.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>Chunked-prefill boundary walls; 0 on a row that never chunked. |
| [prefillTokS](prefillTokS.md) | [common]<br>val [prefillTokS](prefillTokS.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>Prompt ingest rate: a session's isl over its enqueue-to-first-token window, averaged. |
| [reason](reason.md) | [common]<br>val [reason](reason.md): [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)<br>Why a row is not a measurement; empty on an OK row. |
| [rejectedPredictionTokens](rejectedPredictionTokens.md) | [common]<br>val [rejectedPredictionTokens](rejectedPredictionTokens.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) |
| [retires](retires.md) | [common]<br>val [retires](retires.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) |
| [speculativeSteps](speculativeSteps.md) | [common]<br>val [speculativeSteps](speculativeSteps.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) |
| [speedupVsC1](speedupVsC1.md) | [common]<br>val [speedupVsC1](speedupVsC1.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>Against the same cell at concurrency 1 (1 is that row; above 1 is faster). |
| [status](status.md) | [common]<br>val [status](status.md): [BenchRowStatus](../BenchRowStatus/index.md) |
| [ttftMs](ttftMs.md) | [common]<br>val [ttftMs](ttftMs.md): [Double](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-double/index.html)<br>Time to first token, from a session's enqueue to its first token, averaged over the sessions. |