blob: c7e5ef2c2c11dd1a85f474f2d1c775d726fcf661 [file] [log] [blame] [view]
# Benchmark Results Schema
* Updated: 2018 August 9
[TOC]
This document describes the JSON schema that Fuchsia benchmark results must
follow in order to be uploaded to the performance dashboard.
## Helper Libraries
You can use the existing Fuchsia libraries for your language for emitting
the JSON data:
* [C/C++]
* [Go]
* [Dart]
Note: If your benchmark is in a different language, please provide a reusable
library or file a bug against IN to request one.
[C/C++]: /zircon/system/ulib/perftest
[Go]: /garnet/go/src/benchmarking
[Dart]: /sdk/testing/sl4f/client/lib/src/trace_processing/metrics_results.dart
[Rust]: /src/developer/fuchsia-criterion
## JSON Description
```json
[
{
"label": string // Name of the test case in the performance dashboard.
"test_suite": string // Name of the test suite in the performance dashboard.
"unit": string // One of the supported units (see below)
"values": [v1, v2..] // Numeric values collected in this test case
},
{
...
}
]
```
## Supported Units:
In order to convert benchmark results to the format required by the performance
dashboard, `unit` must be one of the following strings, which describe the units
of the result's `values`.
* `nanoseconds` or `ns`
* `milliseconds` or `ms`
* `bytes/second`
* `bytes`
### Example
```json
[
{
"label": "Channel/WriteRead/64bytes",
"test_suite": "fuchsia.microbenchmarks",
"unit": "nanoseconds",
"values": [105.45, 697.916667, 672.743056],
},
{
"label":"Channel/WriteRead/1024bytes",
"test_suite":"fuchsia.microbenchmarks",
"unit":"nanoseconds",
"values":[102.23, 1004.340278, 906.250000],
}
]
```