Skip to content

chore: update benchmark results in README#128

Merged
cloud-hai-vo merged 1 commit into
mainfrom
chore/update-benchmarks-20260522-151217
May 22, 2026
Merged

chore: update benchmark results in README#128
cloud-hai-vo merged 1 commit into
mainfrom
chore/update-benchmarks-20260522-151217

Conversation

@cloud-hai-vo

Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #188.

@github-actions

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Generated: 2026-05-22 15:19 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 15.69 ns 5.244 ns 0.287 ns 15.43 ns 15.64 ns 16.00 ns 1.00 0.02 1 0.0032 80 B 1.00
EggMapper 23.41 ns 9.203 ns 0.504 ns 22.93 ns 23.37 ns 23.94 ns 1.49 0.04 2 0.0032 80 B 1.00
AutoMapper 71.38 ns 5.722 ns 0.314 ns 71.09 ns 71.34 ns 71.71 ns 4.55 0.07 3 0.0031 80 B 1.00
Mapster 27.40 ns 6.132 ns 0.336 ns 27.14 ns 27.29 ns 27.78 ns 1.75 0.03 2 0.0032 80 B 1.00
MapperlyMap 14.59 ns 3.297 ns 0.181 ns 14.43 ns 14.55 ns 14.78 ns 0.93 0.02 1 0.0032 80 B 1.00
AgileMapper 349.85 ns 48.783 ns 2.674 ns 347.67 ns 349.05 ns 352.84 ns 22.30 0.38 4 0.0134 344 B 4.30
EggMapperGenerator 16.53 ns 3.384 ns 0.185 ns 16.32 ns 16.62 ns 16.66 ns 1.05 0.02 1 0.0032 80 B 1.00
EggMapperClassMapper 15.98 ns 14.227 ns 0.780 ns 15.10 ns 16.24 ns 16.59 ns 1.02 0.05 1 0.0032 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 18.26 ns 7.560 ns 0.414 ns 17.82 ns 18.31 ns 18.64 ns 1.00 0.03 1 0.0032 80 B 1.00
EggMap 27.80 ns 4.570 ns 0.250 ns 27.60 ns 27.71 ns 28.08 ns 1.52 0.03 2 0.0032 80 B 1.00
AutoMapper 70.54 ns 3.789 ns 0.208 ns 70.39 ns 70.45 ns 70.78 ns 3.86 0.08 4 0.0031 80 B 1.00
Mapster 36.46 ns 4.422 ns 0.242 ns 36.22 ns 36.45 ns 36.70 ns 2.00 0.04 3 0.0032 80 B 1.00
MapperlyMap 23.21 ns 5.368 ns 0.294 ns 22.94 ns 23.17 ns 23.53 ns 1.27 0.03 2 0.0041 104 B 1.30
AgileMapper 347.25 ns 17.064 ns 0.935 ns 346.24 ns 347.42 ns 348.09 ns 19.03 0.38 5 0.0134 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 57.34 ns 35.568 ns 1.950 ns 55.33 ns 57.45 ns 59.23 ns 1.00 0.04 1 0.0107 272 B 1.00
EggMapper 68.84 ns 34.198 ns 1.874 ns 67.65 ns 67.86 ns 71.00 ns 1.20 0.05 2 0.0107 272 B 1.00
AutoMapper 107.05 ns 11.603 ns 0.636 ns 106.66 ns 106.70 ns 107.78 ns 1.87 0.06 3 0.0107 272 B 1.00
Mapster 70.41 ns 33.849 ns 1.855 ns 68.95 ns 69.78 ns 72.50 ns 1.23 0.05 2 0.0107 272 B 1.00
MapperlyMap 54.48 ns 19.112 ns 1.048 ns 53.30 ns 54.83 ns 55.30 ns 0.95 0.03 1 0.0108 272 B 1.00
AgileMapper 378.77 ns 7.725 ns 0.423 ns 378.42 ns 378.66 ns 379.24 ns 6.61 0.20 4 0.0167 424 B 1.56

🟢 Complex Mapping — nested object + collection

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Allocated Alloc Ratio
Manual 69.51 ns 11.78 ns 0.646 ns 68.83 ns 69.58 ns 70.11 ns 1.00 0.01 1 0.0126 320 B 1.00
EggMapper 87.65 ns 17.29 ns 0.948 ns 86.57 ns 88.10 ns 88.30 ns 1.26 0.02 2 0.0126 320 B 1.00
AutoMapper 136.33 ns 16.52 ns 0.905 ns 135.28 ns 136.82 ns 136.88 ns 1.96 0.02 3 0.0129 328 B 1.02
Mapster 90.97 ns 25.02 ns 1.371 ns 89.40 ns 91.56 ns 91.94 ns 1.31 0.02 2 0.0126 320 B 1.00
MapperlyMap 72.45 ns 17.27 ns 0.947 ns 71.36 ns 72.93 ns 73.07 ns 1.04 0.01 1 0.0126 320 B 1.00
AgileMapper 441.99 ns 40.01 ns 2.193 ns 439.46 ns 443.19 ns 443.32 ns 6.36 0.06 4 0.0210 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.603 μs 0.1708 μs 0.0094 μs 1.593 μs 1.609 μs 1.609 μs 1.00 0.01 1 0.3529 0.0114 8.65 KB 1.00
EggMapper 1.807 μs 0.4927 μs 0.0270 μs 1.777 μs 1.813 μs 1.830 μs 1.13 0.02 1 0.3529 0.0114 8.65 KB 1.00
AutoMapper 2.361 μs 0.6675 μs 0.0366 μs 2.339 μs 2.341 μs 2.403 μs 1.47 0.02 2 0.4044 0.0114 9.95 KB 1.15
Mapster 1.771 μs 0.1020 μs 0.0056 μs 1.765 μs 1.771 μs 1.776 μs 1.10 0.01 1 0.3529 0.0114 8.65 KB 1.00
MapperlyMap 1.810 μs 0.4592 μs 0.0252 μs 1.781 μs 1.819 μs 1.829 μs 1.13 0.01 1 0.3529 0.0114 8.65 KB 1.00
AgileMapper 2.331 μs 0.2683 μs 0.0147 μs 2.319 μs 2.325 μs 2.347 μs 1.45 0.01 2 0.3624 0.0114 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.526 μs 1.3425 μs 0.0736 μs 5.483 μs 5.484 μs 5.611 μs 1.00 0.02 1 1.1139 0.0610 27.4 KB 1.00
EggMapper 5.925 μs 1.0350 μs 0.0567 μs 5.866 μs 5.930 μs 5.979 μs 1.07 0.02 1 1.1139 0.0610 27.4 KB 1.00
AutoMapper 6.728 μs 0.1603 μs 0.0088 μs 6.719 μs 6.726 μs 6.737 μs 1.22 0.01 1 1.1673 0.0687 28.7 KB 1.05
Mapster 6.169 μs 3.9070 μs 0.2142 μs 5.926 μs 6.251 μs 6.330 μs 1.12 0.04 1 1.1139 0.0610 27.4 KB 1.00
MapperlyMap 5.547 μs 1.4145 μs 0.0775 μs 5.468 μs 5.550 μs 5.623 μs 1.00 0.02 1 1.1139 0.0610 27.42 KB 1.00
AgileMapper 5.370 μs 1.9335 μs 0.1060 μs 5.295 μs 5.323 μs 5.491 μs 0.97 0.02 1 0.6790 0.0381 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 15.70 μs 4.836 μs 0.265 μs 15.40 μs 15.80 μs 15.90 μs 1.00 0.02 1 3.4790 0.8545 85.99 KB 1.00
EggMapper 18.56 μs 10.063 μs 0.552 μs 18.14 μs 18.36 μs 19.18 μs 1.18 0.04 1 3.4790 0.8545 85.99 KB 1.00
AutoMapper 21.51 μs 6.012 μs 0.330 μs 21.14 μs 21.63 μs 21.77 μs 1.37 0.03 1 3.8452 0.9460 94.34 KB 1.10
Mapster 16.07 μs 1.624 μs 0.089 μs 16.00 μs 16.03 μs 16.17 μs 1.02 0.02 1 3.4790 0.8545 85.99 KB 1.00
MapperlyMap 17.34 μs 2.769 μs 0.152 μs 17.21 μs 17.31 μs 17.51 μs 1.10 0.02 1 3.5095 0.8545 86.02 KB 1.00
AgileMapper 21.47 μs 2.417 μs 0.132 μs 21.34 μs 21.48 μs 21.60 μs 1.37 0.02 1 3.5095 0.8545 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,306.193 μs 1,770.317 μs 97.0371 μs 1,197.771 μs 1,335.915 μs 1,384.893 μs 1.004 0.09 3 3.9063 1.9531 96.09 KB 1.00
AutoMapperStartup 447.392 μs 1,262.580 μs 69.2063 μs 399.476 μs 415.965 μs 526.736 μs 0.344 0.05 2 3.9063 - 104.62 KB 1.09
MapsterStartup 2.749 μs 1.144 μs 0.0627 μs 2.688 μs 2.746 μs 2.814 μs 0.002 0.00 1 0.4692 0.0114 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.312 ms 1.417 ms 0.0777 ms 1.239 ms 1.303 ms 1.393 ms 1.00 0.07 1 3.9063 - 96.01 KB 1.00
AutoMapper 4.193 ms 7.660 ms 0.4199 ms 3.734 ms 4.287 ms 4.557 ms 3.20 0.32 2 7.8125 - 310.48 KB 3.23
Mapster 4.402 ms 3.738 ms 0.2049 ms 4.167 ms 4.497 ms 4.541 ms 3.36 0.22 2 23.4375 15.6250 764.18 KB 7.96

📝 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 '*'

@cloud-hai-vo cloud-hai-vo merged commit 2298dfe into main May 22, 2026
4 checks passed
@cloud-hai-vo cloud-hai-vo deleted the chore/update-benchmarks-20260522-151217 branch May 22, 2026 15:23
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