Create Data Files of Benchmark Results#
This section shows how to create data files of benchmark results.
cpp-stat-bench library supports the following formats:
JSON (via
--json
option)MessagePack (via
--msgpack
option)Compressed MessagePack (gzip) (via
--compressed-msgpack
option)
Prerequisites#
Implement a benchmark.
Sample Code#
In this section, a benchmark in Implement a Simple Benchmark is used for demonstration purposes.
Create a Data File in JSON Format#
To create a data file in JSON format, use --json
option as follows:
./simple_benchmark --json result.json
This command creates a data file named result.json
in the current directory.
The created file contains the benchmark results in JSON format as follows:
{
"$schema": "https://cppstatbench.musicscience37.com/schemas/data_file_schema_v3.json",
"finished_at": "2025-02-13T14:30:11.842257+0000",
"measurements": [
{
"case_name": "fibonacci(10)",
"custom_outputs": [],
"custom_stat_outputs": [],
"durations": {
"stat": {
"max": 1.5800000596755126e-07,
"mean": 1.3922000619004393e-07,
"median": 1.3899999373734317e-07,
"min": 1.3599999704183574e-07,
"standard_deviation": 2.897508455390607e-09,
"standard_error": 2.897508621924061e-10,
"variance": 8.39555565389066e-18
},
"values": [
[
1.5800000596755126e-07,
1.479999980347202e-07,
1.4900000167017424e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.370000006772898e-07,
1.3899999373734317e-07,
1.4500000133921276e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3999999737279722e-07,
1.3800000431274384e-07,
1.3599999704183574e-07,
1.3999999737279722e-07,
1.3800000431274384e-07,
1.3800000431274384e-07,
1.3999999737279722e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3599999704183574e-07,
1.4100000100825127e-07,
1.370000006772898e-07,
1.3800000431274384e-07,
1.4699999439926614e-07,
1.3800000431274384e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3999999737279722e-07,
1.3800000431274384e-07,
1.3999999737279722e-07,
1.3999999737279722e-07,
1.370000006772898e-07,
1.3599999704183574e-07,
1.3999999737279722e-07,
1.3800000431274384e-07,
1.3800000431274384e-07,
1.4100000100825127e-07,
1.3800000431274384e-07,
1.3800000431274384e-07,
1.3999999737279722e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3800000431274384e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3999999737279722e-07,
1.3899999373734317e-07,
1.3899999373734317e-07,
1.3599999704183574e-07,
1.3999999737279722e-07,
1.3800000431274384e-07,
1.4100000100825127e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3999999737279722e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.4699999439926614e-07,
1.3800000431274384e-07,
1.370000006772898e-07,
1.3899999373734317e-07,
1.370000006772898e-07,
1.3999999737279722e-07,
1.370000006772898e-07,
1.370000006772898e-07,
1.3999999737279722e-07,
1.370000006772898e-07,
1.3800000431274384e-07,
1.3999999737279722e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.3800000431274384e-07,
1.3999999737279722e-07,
1.3999999737279722e-07,
1.3800000431274384e-07,
1.3899999373734317e-07,
1.370000006772898e-07
]
]
},
"group_name": "Fibonacci",
"iterations": 1,
"measurer_name": "Processing Time",
"params": null,
"samples": 100
},
{
"case_name": "fibonacci(15)",
"custom_outputs": [],
"custom_stat_outputs": [],
"durations": {
"stat": {
"max": 1.4429999737330945e-06,
"mean": 1.3847300124325557e-06,
"median": 1.3840000292475452e-06,
"min": 1.374000021314714e-06,
"standard_deviation": 8.045144106461066e-09,
"standard_error": 8.045143995438764e-10,
"variance": 6.472434183343265e-17
},
"values": [
[
1.4429999737330945e-06,
1.4170000213198364e-06,
1.401999952577171e-06,
1.3909999552197405e-06,
1.3950000266049756e-06,
1.3820000503983465e-06,
1.3940000371803762e-06,
1.3820000503983465e-06,
1.3840000292475452e-06,
1.3850000186721445e-06,
1.374000021314714e-06,
1.3840000292475452e-06,
1.3760000001639128e-06,
1.3820000503983465e-06,
1.3840000292475452e-06,
1.3769999895885121e-06,
1.3869999975213432e-06,
1.3860000080967438e-06,
1.3850000186721445e-06,
1.3850000186721445e-06,
1.3809999472869094e-06,
1.3879999869459425e-06,
1.3860000080967438e-06,
1.3860000080967438e-06,
1.3860000080967438e-06,
1.3889999763705418e-06,
1.3830000398229458e-06,
1.3820000503983465e-06,
1.3789999684377108e-06,
1.3899999657951412e-06,
1.3809999472869094e-06,
1.3869999975213432e-06,
1.3830000398229458e-06,
1.3769999895885121e-06,
1.3809999472869094e-06,
1.3779999790131114e-06,
1.3840000292475452e-06,
1.3840000292475452e-06,
1.3799999578623101e-06,
1.3860000080967438e-06,
1.3809999472869094e-06,
1.3899999657951412e-06,
1.3850000186721445e-06,
1.3830000398229458e-06,
1.3869999975213432e-06,
1.3860000080967438e-06,
1.3889999763705418e-06,
1.3840000292475452e-06,
1.3830000398229458e-06,
1.3889999763705418e-06,
1.3830000398229458e-06,
1.3869999975213432e-06,
1.3830000398229458e-06,
1.3809999472869094e-06,
1.3820000503983465e-06,
1.3779999790131114e-06,
1.3850000186721445e-06,
1.3779999790131114e-06,
1.3789999684377108e-06,
1.3789999684377108e-06,
1.3769999895885121e-06,
1.3860000080967438e-06,
1.3789999684377108e-06,
1.3809999472869094e-06,
1.3879999869459425e-06,
1.3820000503983465e-06,
1.3869999975213432e-06,
1.3840000292475452e-06,
1.3840000292475452e-06,
1.3940000371803762e-06,
1.3840000292475452e-06,
1.3860000080967438e-06,
1.3850000186721445e-06,
1.3840000292475452e-06,
1.3879999869459425e-06,
1.3799999578623101e-06,
1.3860000080967438e-06,
1.3799999578623101e-06,
1.3789999684377108e-06,
1.3820000503983465e-06,
1.3809999472869094e-06,
1.3850000186721445e-06,
1.3750000107393134e-06,
1.3809999472869094e-06,
1.3789999684377108e-06,
1.3830000398229458e-06,
1.3840000292475452e-06,
1.3820000503983465e-06,
1.3879999869459425e-06,
1.3820000503983465e-06,
1.3799999578623101e-06,
1.3869999975213432e-06,
1.3850000186721445e-06,
1.3879999869459425e-06,
1.3850000186721445e-06,
1.3799999578623101e-06,
1.3869999975213432e-06,
1.3840000292475452e-06,
1.3830000398229458e-06,
1.3799999578623101e-06
]
]
},
"group_name": "Fibonacci",
"iterations": 1,
"measurer_name": "Processing Time",
"params": null,
"samples": 100
},
{
"case_name": "fibonacci(10)",
"custom_outputs": [],
"custom_stat_outputs": [],
"durations": {
"stat": {
"max": 1.230868962309728e-09,
"mean": 9.417940871614405e-10,
"median": 9.133014899909142e-10,
"min": 9.113870214072506e-10,
"standard_deviation": 7.730981133047266e-11,
"standard_error": 1.4114775320761552e-11,
"variance": 5.976806844595756e-21
},
"values": [
[
0.0009161920170299709,
0.0009132269769906998,
0.0012112139957025647,
0.0009478270076215267,
0.0012308689765632153,
0.0009474679827690125,
0.0009476090199314058,
0.0009473810205236077,
0.0009477669955231249,
0.0009474880062043667,
0.0009449649951420724,
0.0009132060222327709,
0.0009114100248552859,
0.0009159820037893951,
0.0009133039857260883,
0.0009131859987974167,
0.0009131280239671469,
0.0009131570113822818,
0.0009138790192082524,
0.0009132290142588317,
0.0009142549824900925,
0.0009132989798672497,
0.0009131610277108848,
0.0009131869883276522,
0.0009113869746215641,
0.00091316900216043,
0.0009133359999395907,
0.0009132209816016257,
0.0009131240076385438,
0.0009131939732469618
]
]
},
"group_name": "Fibonacci",
"iterations": 1000000,
"measurer_name": "Mean Processing Time",
"params": null,
"samples": 30
},
{
"case_name": "fibonacci(15)",
"custom_outputs": [],
"custom_stat_outputs": [],
"durations": {
"stat": {
"max": 2.9876860985211806e-09,
"mean": 1.2719898467850044e-09,
"median": 1.170501029434945e-09,
"min": 1.168736996071118e-09,
"standard_deviation": 3.7040920330966287e-10,
"standard_error": 6.762716081576414e-11,
"variance": 1.3720298771340166e-19
},
"values": [
[
0.0011830569710582495,
0.0013660229742527008,
0.0011689079692587256,
0.0011705979704856873,
0.0029876860789954662,
0.002142546931281686,
0.0011750300182029605,
0.001175028970465064,
0.0011705609504133463,
0.0011758999899029732,
0.0011741709895431995,
0.0011704410426318645,
0.0011730949627235532,
0.00121885200496763,
0.001169355004094541,
0.0011688560480251908,
0.0011706360382959247,
0.001168787945061922,
0.001168754999525845,
0.0011688260128721595,
0.0011687539517879486,
0.001170612988062203,
0.0011687369551509619,
0.0011688340455293655,
0.0011687929509207606,
0.001169834053143859,
0.0011688780505210161,
0.0011705970391631126,
0.0011687739752233028,
0.0011687659425660968
]
]
},
"group_name": "Fibonacci",
"iterations": 1000000,
"measurer_name": "Mean Processing Time",
"params": null,
"samples": 30
}
],
"started_at": "2025-02-13T14:30:10.175640+0000"
}
For description of the file format, see Schemas.
Create a Data File in MessagePack Format#
To create a data file in MessagePack format, use --msgpack
option as follows:
./simple_benchmark --msgpack result.data
This command creates a data file named result.data
in the current directory.
The created file contains the benchmark results in MessagePack format
with data structure same as JSON format.
Create a Data File in MessagePack Format with Compression#
To create a compressed data file in MessagePack format,
use --compressed-msgpack
option as follows:
./simple_benchmark --compressed-msgpack result.data
This command creates a data file named result.data
in the current directory.
The created file is compressed in gzip format.
The compressed contents is same as the data file in MessagePack format.
Hint
For example, Python’s standard gzip
package can decompress the compressed data file.