Conversation
|
| Project | Bencher |
| Branch | u/ep/parameters-api/tail |
| Testbed | intel-v1 |
Click to view all benchmark results
| Benchmark | Latency | Benchmark Result microseconds (碌s) (Result 螖%) | Upper Boundary microseconds (碌s) (Limit %) |
|---|---|---|---|
| Adapter::Json | 馃搱 view plot 馃毞 view threshold | 5.19 碌s(+6.65%)Baseline: 4.87 碌s | 5.92 碌s (87.78%) |
| Adapter::Magic (JSON) | 馃搱 view plot 馃毞 view threshold | 4.97 碌s(+5.37%)Baseline: 4.71 碌s | 5.61 碌s (88.48%) |
| Adapter::Magic (Rust) | 馃搱 view plot 馃毞 view threshold | 27.80 碌s(+5.03%)Baseline: 26.47 碌s | 30.02 碌s (92.60%) |
| Adapter::Rust | 馃搱 view plot 馃毞 view threshold | 4.70 碌s(+19.57%)Baseline: 3.93 碌s | 6.14 碌s (76.53%) |
| Adapter::RustBench | 馃搱 view plot 馃毞 view threshold | 4.67 碌s(+19.07%)Baseline: 3.92 碌s | 6.11 碌s (76.38%) |
185d60f to
d370875
Compare
d370875 to
dda7dcf
Compare
dda7dcf to
54555d1
Compare
54555d1 to
e93a204
Compare
e93a204 to
17c85d9
Compare
Review after the rebase onto develRebased onto devel with the terminology sweep, carried into all nine locales of the BMF v1 reference. A second sentence describing the retired project version gate was rewritten in every locale to match devel: a project's Major: the BMF v1 reference's adoption advice cannot be followed from the CLI
The one CLI route left is an admin raising the project's Fix, a product call: either give the CLI a |
48adb22 to
02443e4
Compare
02443e4 to
cfe08ef
Compare
33b77c3 to
1eb901b
Compare
A result row of a pull request comment names its variant by the rule the perf image
already uses. A benchmark whose every row in the comment carries the empty variant
keeps the bare benchmark name it has always had. One non-empty variant among its
rows names them all, the empty variant among them included, which reads `{}`. The
parameters are spelled in their canonical form and follow the benchmark name.
Results and alerts decide together, so the two tables of one comment never disagree
about how a benchmark is named, and a BMF v0 comment renders exactly as it did
because there is nothing to spell.
A measure that carries names beyond the conventional trio renders one column per
name, headed `Measure (name)`, after the columns it already had. A measure that
named no point estimate renders its named columns instead of nothing. The per
measure name cap bounds the width. What a threshold computed for a metric rides
inside that name's cell, the way a baseline rides inside the point estimate's, so a
name is one column and never three.
Finding the alert for a cell matches all four of the things an alert fires on: the
benchmark, the variant, the measure, and the name. Matching on the benchmark and the
measure alone attached one alert to every variant of that benchmark and bolded the
wrong row. The alert table labels the variant from the alert's own parameters and
names the metric its threshold checks when that is not `value`.
The cell's threshold badge, the no threshold warning, and `--ci-only-thresholds` now
ask one predicate, which reads the deprecated bare threshold fields first and falls
back to the boundaries on the metric rows. Every threshold a BMF v0 payload can
create is bare, so the v0 cell is the cell it always was. A measure checked only by
a threshold that names a metric or filters variants used to render a cell shouting
NO THRESHOLD under a warning that stayed silent about it, which is one comment
contradicting itself. It now links the threshold that checked it.
The CLI perf table gains a Parameters column between the benchmark and the measure,
where the variant sits in a perf result. The column is removed entirely unless some
line of the query plots a non-empty variant, so a project that never reported any
parameters prints the table it always printed, column for column, which a test pins
byte for byte. Every cell spells its parameters canonically. Display of metrics
other than `value` in the table is deferred.
The Bencher Metric Format reference gains a v1 section beside the v0 material, in
every locale: the array of entries, `parameters` as JSON scalars with their caps and
their canonical form, metrics with the conventional trio and the per measure cap,
`bmf_version` on the report and the project default a report that declares none is
read as, the v1 threshold list with its optional `metric` and its `parameters`
filter, every matching threshold firing, what `reset` can reach at each version, and
fold being warned about and ingested unfolded.
The warning the format owes its authors gets a section of its own: a v1 payload
written without its array wrapper is a valid v0 payload, so the generic `json`
adapter reads `parameters` and every metric as measures and the intended results are
silently lost. The `json_v1` adapter accepts nothing but v1, so it is what turns
that mistake into a rejected report rather than a quiet downgrade, and `bmf_version`
is what states the version and orders the attempts.
A `v1/bmf.json` schema is published beside `v0/bmf.json`. The unversioned `bmf.json`
is unchanged and stays the default version, v0, so nothing an existing author
validates against moves.
1eb901b to
bf840c4
Compare
The tail of the benchmark parameters stack: the places a variant still had no name.
The pull request comment
A result row names its variant by the same rule the perf image uses. A
benchmark whose every row in the comment carries empty parameters keeps the
bare benchmark name it has always had. One variant with non-empty parameters among
its rows names them all, the empty parameters among them included, which read
{}.The parameters are spelled in their canonical form and follow the benchmark name.
Results and alerts are counted together when the decision is made, so the two
tables of one comment never disagree about how a benchmark is named. Every BMF v0
comment renders exactly as it did: without parameters there is nothing to spell.
A measure that carries metrics beyond the conventional trio renders one column per
name, headed
Measure (name), after the measure's existing columns. A measure thatnamed no point estimate renders its named columns instead of nothing, which is the
one behavior this changes for a payload that has names at all. The per measure name
cap bounds the width. A named column shows what a threshold computed for that name
inside the cell, the way the point estimate column shows its baseline, so a name is
one column and never three.
Finding the alert for a cell now matches four of the things an alert fires on: the
benchmark, the variant, the measure, and the name. Matching on the benchmark and
the measure alone attached one alert to every variant of that benchmark and
bolded the wrong row. The iteration stays deliberately unmatched, as it always has
been, because matching it would change what an existing multi-iteration comment
renders. The alert table reads the flat
valueit already read, labels the variantfrom
alert.variant, and names the metric fromalert.threshold.metricwhen that is not
value.The cell's threshold badge, the no threshold warning, and
--ci-only-thresholdsaskone predicate, which reads the deprecated bare check first and falls back to the
boundaries on the metric rows. Every threshold a BMF v0 payload can create is bare,
so the v0 cell is the cell it always was. A measure checked only by a threshold that
names a metric or filters variants used to render a cell shouting NO THRESHOLD
under a warning that stayed silent about it. It now links the threshold that checked
it.
The CLI perf table
The perf table gains a
Parameterscolumn between the benchmark and the measure,where the variant's parameters sit in a perf result. The column is removed entirely
unless some line of the query plots non-empty parameters, so a project that never
reported parameters prints the table it always printed, column for column, which a
test pins byte for byte. Every cell spells its parameters canonically, the empty
ones as
{}. Display of metrics other thanvaluein the table is deferred.The BMF v1 reference
The Bencher Metric Format reference gains a v1 section beside the v0 material, in all
nine locales: the array of entries,
parametersas JSON scalars with their caps andtheir canonical form, metrics with the conventional trio and the per measure cap,
bmf_versionon the report and the project default a report that declares none isread as, the v1
thresholds.modelslist with its optionalmetricand itsparametersfilter, every matching threshold firing, whatresetcan reach at eachversion, and fold being warned about and ingested unfolded.
The warning the format owes its authors is called out on its own: a v1 payload
written without its array wrapper is a valid v0 payload, so the generic
jsonadapter reads
parametersand every metric as measures and the intended resultsare silently lost. The
json_v1adapter accepts nothing but v1, so it is whatturns that mistake into a rejected report rather than a quiet downgrade.
A
v1/bmf.jsonschema artifact is published besidev0/bmf.json. The unversionedbmf.jsonis unchanged and stays the default version, v0, so nothing an existingauthor validates against moves.