#134 Better benchmarks across mappers with CI charts and gist history - #286
Merged
Conversation
Build all projects with -c Release so downstream packages and benchmarks use optimized output. Co-authored-by: Cursor <cursoragent@cursor.com>
Add class/record/struct, collection, nested DTO, memory, polymorphic, and IQueryable benchmarks with AutoMapper as baseline and ~300-entry collections including dictionaries. Co-authored-by: Cursor <cursoragent@cursor.com>
Use AddProfile per scenario, ConvertUsing for dictionaries, and emit summary/history/SVG outputs under .mappa-benchmark with Automapper, Mapster, Mapperly, Mappa bar order. Co-authored-by: Cursor <cursoragent@cursor.com>
Add ListToArrayBenchmark before FastListToArrayBenchmark and use a 50 us Y-axis tick on the mean-time chart. Co-authored-by: Cursor <cursoragent@cursor.com>
Extend the coverage PR comment with full mapper summary and three Mappa trends, and append history rows while tolerating a missing or header-only gist file. Co-authored-by: Cursor <cursoragent@cursor.com>
… to gist. Generate coverage-style TIME/MEMORY history charts for the shared benchmark subset, rename summary SVG outputs, and upload all four SVGs from UpdateBenchmarkGists. Co-authored-by: Cursor <cursoragent@cursor.com>
Add -ChartBenchmarksOnly to RunBenchmarks and run that subset in pr.yml before the coverage comment and in merge-main.yml before UpdateBenchmarkGists. Co-authored-by: Cursor <cursoragent@cursor.com>
Expand development.md and add Mappa.Benchmark/README.md; append TIME/MEMORY summary and history SVGs to the repository README. Co-authored-by: Cursor <cursoragent@cursor.com>
Require evaluating new Mappa.Benchmark scenarios for features, keep new benches out of the SVG chart subset unless asked, and ask before opening dependency-update issues. Co-authored-by: Cursor <cursoragent@cursor.com>
Closed
Closed
Code coverageCompared against the latest published coverage history from the code coverage gist.
No coverage metric dropped by more than 1 percentage point(s) versus baseline. BenchmarksAutoMapper is the BenchmarkDotNet ratio baseline. Absolute values are mean time in nanoseconds and allocated bytes. Ratio columns are competitor / Mappa as a percentage (n/a when either side is missing or Mappa is zero).
Benchmark trends (Mappa)Lower is better. Compared against the latest published Mappa-only rows from MAPPA-BENCHMARK-HISTORY.md.
|
…SVG benches. Extend the benchmark summary with Automapper/Mapperly/Mapster over Mappa percentage columns, point PR trends at BenchmarkChartNames, and clarify the outdated-package pre-PR check command. Co-authored-by: Cursor <cursoragent@cursor.com>
Generate TIME/MEMORY percentage SVGs for the shared chart subset, publish them from UpdateBenchmarkGists, and embed them in the root README. Co-authored-by: Cursor <cursoragent@cursor.com>
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.
Summary
Mappa.Benchmarkinto a broad AutoMapper / Mapster / Mapperly / Mappa suite (objects, enums, collections, memory, polymorphism, IQueryable, nested DTOs) with AutoMapper as the ratio baseline.RunBenchmarks.ps1/ SVG helpers to emit summary tables, TIME/MEMORY bar charts, and Mappa-only history rows; publish history + charts viaUpdateBenchmarkGists.ps1.Test plan
.\Scripts\RunBenchmarks.ps1 -ChartBenchmarksOnlycompletes and writes.mappa-benchmark/summary + SVG outputs.\Scripts\UpdateBenchmarkGists.ps1 -DryRunmerges gist history and regenerates history SVGs without upload.\Scripts\CommentPullRequestCoverage.ps1 -DryRunincludes Benchmarks + trends sectionsmain