Skip to content

chore: update benchmark results in README - #131

Open
cloud-hai-vo wants to merge 1 commit into
mainfrom
chore/update-benchmarks-20260915-135735
Open

cloud-hai-vo wants to merge 1 commit into
mainfrom
chore/update-benchmarks-20260915-135735

Conversation

@cloud-hai-vo

Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #193.

@github-actions

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Generated: 2026-09-15 14:04 UTC  ·  Download full artifacts

Column guide:
Mean = average execution time  ·  Error = half of 99.9 % confidence interval  ·  StdDev = standard deviation  ·  Min / Median / Max = statistical range  ·  Ratio = vs Manual baseline (lower = closer to hand-written speed)  ·  RatioSD = ratio std dev  ·  Rank = 1 is fastest  ·  Gen0/1/2 = GC collections per 1 000 ops  ·  Allocated = managed heap per operation  ·  Alloc Ratio = allocation ratio vs baseline

🔵 Flat Mapping — 10-property object

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Allocated Alloc Ratio
Manual 14.95 ns 4.705 ns 0.258 ns 14.67 ns 15.01 ns 15.18 ns 1.00 0.02 1 0.0048 80 B 1.00
EggMapper 25.79 ns 5.188 ns 0.284 ns 25.55 ns 25.71 ns 26.10 ns 1.73 0.03 2 0.0048 80 B 1.00
AutoMapper 81.98 ns 6.106 ns 0.335 ns 81.60 ns 82.11 ns 82.23 ns 5.48 0.08 3 0.0048 80 B 1.00
Mapster 27.71 ns 3.054 ns 0.167 ns 27.61 ns 27.62 ns 27.91 ns 1.85 0.03 2 0.0048 80 B 1.00
MapperlyMap 14.82 ns 2.553 ns 0.140 ns 14.67 ns 14.84 ns 14.95 ns 0.99 0.02 1 0.0048 80 B 1.00
AgileMapper 487.32 ns 130.996 ns 7.180 ns 482.34 ns 484.07 ns 495.55 ns 32.60 0.64 4 0.0200 344 B 4.30
EggMapperGenerator 15.29 ns 4.355 ns 0.239 ns 15.02 ns 15.41 ns 15.45 ns 1.02 0.02 1 0.0048 80 B 1.00
EggMapperClassMapper 15.03 ns 6.739 ns 0.369 ns 14.66 ns 15.02 ns 15.40 ns 1.01 0.03 1 0.0048 80 B 1.00

🟡 Flattening — 2 nested objects → 8 flat properties

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Allocated Alloc Ratio
Manual 19.09 ns 9.496 ns 0.520 ns 18.60 ns 19.04 ns 19.63 ns 1.00 0.03 1 0.0048 80 B 1.00
EggMap 29.96 ns 2.103 ns 0.115 ns 29.83 ns 30.00 ns 30.06 ns 1.57 0.04 3 0.0048 80 B 1.00
AutoMapper 86.94 ns 4.256 ns 0.233 ns 86.67 ns 87.05 ns 87.09 ns 4.56 0.11 5 0.0048 80 B 1.00
Mapster 36.82 ns 13.567 ns 0.744 ns 35.98 ns 37.07 ns 37.40 ns 1.93 0.06 4 0.0048 80 B 1.00
MapperlyMap 24.73 ns 4.238 ns 0.232 ns 24.48 ns 24.78 ns 24.93 ns 1.30 0.03 2 0.0062 104 B 1.30
AgileMapper 541.57 ns 67.310 ns 3.689 ns 539.10 ns 539.80 ns 545.81 ns 28.38 0.69 6 0.0200 344 B 4.30

🟣 Deep Mapping — 2 nested address objects

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Allocated Alloc Ratio
Manual 52.55 ns 4.470 ns 0.245 ns 52.32 ns 52.52 ns 52.81 ns 1.00 0.01 1 0.0162 272 B 1.00
EggMapper 68.97 ns 40.519 ns 2.221 ns 66.96 ns 68.61 ns 71.36 ns 1.31 0.04 2 0.0162 272 B 1.00
AutoMapper 123.86 ns 20.880 ns 1.144 ns 122.70 ns 123.89 ns 124.99 ns 2.36 0.02 3 0.0162 272 B 1.00
Mapster 65.98 ns 13.057 ns 0.716 ns 65.17 ns 66.23 ns 66.54 ns 1.26 0.01 2 0.0162 272 B 1.00
MapperlyMap 49.55 ns 10.178 ns 0.558 ns 49.00 ns 49.53 ns 50.12 ns 0.94 0.01 1 0.0162 272 B 1.00
AgileMapper 514.46 ns 35.171 ns 1.928 ns 512.24 ns 515.50 ns 515.65 ns 9.79 0.05 4 0.0248 424 B 1.56

🟢 Complex Mapping — nested object + collection

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Allocated Alloc Ratio
Manual 72.36 ns 38.62 ns 2.117 ns 70.13 ns 72.59 ns 74.35 ns 1.00 0.04 1 0.0191 320 B 1.00
EggMapper 97.77 ns 50.48 ns 2.767 ns 94.59 ns 99.17 ns 99.57 ns 1.35 0.05 2 0.0191 320 B 1.00
AutoMapper 155.75 ns 36.23 ns 1.986 ns 153.79 ns 155.69 ns 157.76 ns 2.15 0.06 3 0.0196 328 B 1.02
Mapster 89.11 ns 55.01 ns 3.015 ns 86.34 ns 88.67 ns 92.32 ns 1.23 0.05 2 0.0191 320 B 1.00
MapperlyMap 70.82 ns 27.50 ns 1.508 ns 69.83 ns 70.08 ns 72.56 ns 0.98 0.03 1 0.0191 320 B 1.00
AgileMapper 581.05 ns 117.26 ns 6.428 ns 575.23 ns 579.99 ns 587.95 ns 8.04 0.22 4 0.0315 528 B 1.65

🟠 Collection — 100-item List<T>

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Gen1 Allocated Alloc Ratio
Manual 1.977 μs 0.7503 μs 0.0411 μs 1.937 μs 1.976 μs 2.019 μs 1.00 0.03 1 0.5264 0.0153 8.65 KB 1.00
EggMapper 1.922 μs 0.5421 μs 0.0297 μs 1.888 μs 1.939 μs 1.940 μs 0.97 0.02 1 0.5264 0.0153 8.65 KB 1.00
AutoMapper 2.631 μs 0.5449 μs 0.0299 μs 2.598 μs 2.639 μs 2.656 μs 1.33 0.03 2 0.6065 0.0191 9.95 KB 1.15
Mapster 1.925 μs 0.7211 μs 0.0395 μs 1.880 μs 1.940 μs 1.955 μs 0.97 0.02 1 0.5264 0.0153 8.65 KB 1.00
MapperlyMap 1.883 μs 0.8752 μs 0.0480 μs 1.830 μs 1.896 μs 1.924 μs 0.95 0.03 1 0.5264 0.0153 8.65 KB 1.00
AgileMapper 2.644 μs 0.7701 μs 0.0422 μs 2.607 μs 2.635 μs 2.690 μs 1.34 0.03 2 0.5417 0.0153 8.91 KB 1.03

🟠 Collection — 100-item List<T>

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Gen1 Allocated Alloc Ratio
Manual 5.267 μs 1.842 μs 0.1010 μs 5.189 μs 5.231 μs 5.381 μs 1.00 0.02 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 5.771 μs 1.983 μs 0.1087 μs 5.677 μs 5.745 μs 5.890 μs 1.10 0.03 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 6.471 μs 2.923 μs 0.1602 μs 6.348 μs 6.413 μs 6.652 μs 1.23 0.03 1 1.7548 0.1068 28.7 KB 1.05
Mapster 6.057 μs 3.299 μs 0.1808 μs 5.913 μs 5.998 μs 6.260 μs 1.15 0.04 1 1.6708 0.0916 27.4 KB 1.00
MapperlyMap 5.493 μs 1.839 μs 0.1008 μs 5.378 μs 5.536 μs 5.565 μs 1.04 0.02 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 5.295 μs 1.790 μs 0.0981 μs 5.182 μs 5.346 μs 5.357 μs 1.01 0.02 1 1.0223 0.0610 16.72 KB 0.61

🟠 Collection — 100-item List<T>

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Gen1 Allocated Alloc Ratio
Manual 18.08 μs 4.284 μs 0.235 μs 17.81 μs 18.18 μs 18.24 μs 1.00 0.02 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 18.02 μs 3.970 μs 0.218 μs 17.89 μs 17.90 μs 18.27 μs 1.00 0.02 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 22.61 μs 1.543 μs 0.085 μs 22.52 μs 22.62 μs 22.69 μs 1.25 0.01 1 5.7678 1.4343 94.34 KB 1.10
Mapster 18.18 μs 4.120 μs 0.226 μs 18.02 μs 18.08 μs 18.44 μs 1.01 0.02 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 19.48 μs 1.796 μs 0.098 μs 19.42 μs 19.43 μs 19.60 μs 1.08 0.01 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 21.59 μs 1.451 μs 0.080 μs 21.52 μs 21.56 μs 21.68 μs 1.19 0.01 1 5.2795 1.3123 86.25 KB 1.00

⚪ Startup / Configuration time

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Gen1 Allocated Alloc Ratio
EggMapperStartup 1,348.096 μs 2,379.9983 μs 130.4557 μs 1,198.142 μs 1,410.658 μs 1,435.487 μs 1.007 0.12 3 5.8594 3.9063 96.08 KB 1.00
AutoMapperStartup 463.848 μs 924.8130 μs 50.6921 μs 419.940 μs 452.280 μs 519.325 μs 0.346 0.04 2 5.8594 - 104.04 KB 1.08
MapsterStartup 2.630 μs 0.5154 μs 0.0282 μs 2.598 μs 2.639 μs 2.653 μs 0.002 0.00 1 0.7019 0.0267 11.51 KB 0.12

EggMapper.Benchmarks.ColdStartBenchmark-report-github

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Gen1 Allocated Alloc Ratio
EggMapper 1.335 ms 1.579 ms 0.0865 ms 1.264 ms 1.309 ms 1.431 ms 1.00 0.08 1 5.8594 3.9063 96 KB 1.00
AutoMapper 4.056 ms 10.513 ms 0.5763 ms 3.490 ms 4.036 ms 4.642 ms 3.05 0.41 2 15.6250 7.8125 310.47 KB 3.23
Mapster 4.374 ms 10.211 ms 0.5597 ms 3.746 ms 4.555 ms 4.821 ms 3.29 0.41 2 39.0625 15.6250 757.68 KB 7.89

📝 Notes
  • Each benchmark class is decorated with [MemoryDiagnoser] and [RankColumn].
  • The global config (see src/EggMapper.Benchmarks/Program.cs) adds Min, Median, and Max columns.
  • Manual is the hand-written baseline (ratio = 1.00). A ratio < 1 means faster than manual.
  • Benchmarks run on GitHub-hosted runners — absolute times may vary between runs; focus on Ratio for comparisons.
  • To reproduce locally:
    cd src/EggMapper.Benchmarks
    dotnet run --configuration Release -- --filter '*'

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.

1 participant