Skip to content

chore(deps): upgrade Perfolizer from 0.6.6 to 0.7.5#3209

Open
jn8128 wants to merge 1 commit into
dotnet:masterfrom
jn8128:chore/bump-perfolizer-0.7.5
Open

chore(deps): upgrade Perfolizer from 0.6.6 to 0.7.5#3209
jn8128 wants to merge 1 commit into
dotnet:masterfrom
jn8128:chore/bump-perfolizer-0.7.5

Conversation

@jn8128

@jn8128 jn8128 commented Jul 26, 2026

Copy link
Copy Markdown

Perfolizer 0.7.x follows Pragmastat 11-14, which removed the configurable presentation layer from metrology, so unit formatting moves into BenchmarkDotNet. Reported output stays byte-for-byte the same: microseconds still print as μs, and the statistics are untouched, since the deprecated significance testing API is kept on purpose while that subsystem awaits its own rework. This picks up where #3159 stopped, adapting the incompatible code it ran into.

Appendix

What upstream removed. UnitPresentation, MeasurementUnitFormatter, SampleFormatter, and the settings-aware MeasurementFormatter are gone, along with AbbreviationAscii and the NumberValue/RatioValue/DisparityValue wrappers. How a measurement looks is now the consumer's decision, so UnitHelper becomes that layer: it formats value, gap, and abbreviation, using the invariant culture unless one is supplied, and it owns the abbreviation shown to users. Cells, column headers, and the time-unit legend all resolve abbreviations through it, so they cannot drift apart.

Microseconds. Perfolizer reports them as ASCII us since 0.7.0. BenchmarkDotNet keeps printing μs and lets ConsoleLogger downgrade it for terminals without Unicode support, exactly as before. Since perfolizer parsers now recognize only the ASCII spelling, thresholds arriving from the command line are normalized on the way in, so --statisticalTest 5μs keeps working.

Statistics left alone. SimpleEquivalenceTest and MannWhitneyTest are obsolete in favor of Pragmastat.Toolkit.Compare2, which reports per-metric verdicts against typed thresholds instead of a single equivalence result. Adopting it would change every Same/Faster/Slower verdict and every rank, so the three call sites suppress the warning and keep today's behavior; the switch belongs in a dedicated change with validation against real runs.

Smaller adaptations. Threshold becomes ambiguous between Perfolizer.Metrology and Pragmastat once both namespaces are in scope, resolved with an alias. Perfonar table snapshots are updated rather than preserved: those exporters are internal and unreachable from any public config, and the layout shift comes from perfolizer dropping the gap in its own table renderer.

Why 0.7.5 and not 0.7.4. In 0.7.4 a missing format provider falls through to the ambient culture, so on a non-English machine a processor brand renders as (Max: 3,10GHz) and a column name as MannWhitney(2,5%). Fixed in AndreyAkinshin/perfolizer#33, released as 0.7.5, which also pins the formatting contract with round-trip and culture tests.

Summary tables were checked against a live benchmark run, not just unit tests: 12.63 μs in markdown and Unicode console output, Mean [μs] when units go into the header, us in the plain console.

Perfolizer 0.7.x follows Pragmastat 11-14, which removed the configurable
presentation layer from metrology: UnitPresentation, MeasurementUnitFormatter,
SampleFormatter, and the settings-aware MeasurementFormatter are gone, along
with AbbreviationAscii and the NumberValue/RatioValue/DisparityValue wrappers.
Deciding how a measurement looks is now the consumer's job, so this moves that
decision into BenchmarkDotNet instead of reconstructing the old API upstream.

UnitHelper becomes that layer. It formats a measurement the way the summary
tables always did (value, gap, abbreviation, invariant culture unless a culture
is supplied) and owns the abbreviation shown to users: perfolizer reports
microseconds as ASCII "us" since 0.7.0, while BenchmarkDotNet keeps printing
"μs" and lets ConsoleLogger downgrade it for terminals without Unicode support.
Cells, column headers, and the time-unit legend all resolve abbreviations
through the same place, so they cannot drift apart. Since perfolizer parsers
now only recognize the ASCII spelling, thresholds coming from the command line
are normalized on the way in, keeping "--statisticalTest 5μs" working.

Two smaller adaptations: Threshold is ambiguous between Perfolizer.Metrology
and Pragmastat once both namespaces are in scope, and the significance testing
API is obsolete in favor of Pragmastat.Toolkit.Compare2. Compare2 reports
per-metric verdicts against typed thresholds rather than a single equivalence
result, so adopting it changes every Same/Faster/Slower verdict and every rank;
that is a separate migration, and the three call sites suppress the warning
with a pointer to it.

Perfonar table snapshots are updated rather than preserved: the exporters are
internal, unreachable from any public config, and the layout shift comes from
perfolizer dropping the gap in its own table renderer.

Acked-by: Andrey Akinshin <andrey.akinshin@gmail.com>
@jn8128

jn8128 commented Jul 26, 2026

Copy link
Copy Markdown
Author

@dotnet-policy-service agree

@AndreyAkinshin
AndreyAkinshin self-requested a review July 26, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants