chore(deps): upgrade Perfolizer from 0.6.6 to 0.7.5#3209
Open
jn8128 wants to merge 1 commit into
Open
Conversation
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>
Author
|
@dotnet-policy-service agree |
AndreyAkinshin
self-requested a review
July 26, 2026 20:55
AndreyAkinshin
approved these changes
Jul 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-awareMeasurementFormatterare gone, along withAbbreviationAsciiand theNumberValue/RatioValue/DisparityValuewrappers. How a measurement looks is now the consumer's decision, soUnitHelperbecomes 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
ussince 0.7.0. BenchmarkDotNet keeps printingμsand letsConsoleLoggerdowngrade 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μskeeps working.Statistics left alone.
SimpleEquivalenceTestandMannWhitneyTestare obsolete in favor ofPragmastat.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.
Thresholdbecomes ambiguous betweenPerfolizer.MetrologyandPragmastatonce 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 asMannWhitney(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 μsin markdown and Unicode console output,Mean [μs]when units go into the header,usin the plain console.