Skip to content

chore: update benchmark results in README#92

Merged
cloud-hai-vo merged 1 commit intomainfrom
chore/update-benchmarks-20260327-141402
Mar 27, 2026
Merged

chore: update benchmark results in README#92
cloud-hai-vo merged 1 commit intomainfrom
chore/update-benchmarks-20260327-141402

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #135.

@cloud-hai-vo cloud-hai-vo enabled auto-merge (squash) March 27, 2026 14:14
@cloud-hai-vo cloud-hai-vo merged commit 5a3b838 into main Mar 27, 2026
5 checks passed
@cloud-hai-vo cloud-hai-vo deleted the chore/update-benchmarks-20260327-141402 branch March 27, 2026 14:15
@github-actions
Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Generated: 2026-03-27 14:20 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 13.92 ns 0.167 ns 0.009 ns 13.92 ns 13.92 ns 13.93 ns 1.00 0.00 1 0.0032 80 B 1.00
EggMapper 25.73 ns 2.885 ns 0.158 ns 25.55 ns 25.81 ns 25.84 ns 1.85 0.01 2 0.0032 80 B 1.00
AutoMapper 66.41 ns 1.024 ns 0.056 ns 66.35 ns 66.41 ns 66.47 ns 4.77 0.00 3 0.0031 80 B 1.00
Mapster 25.47 ns 8.434 ns 0.462 ns 25.12 ns 25.29 ns 25.99 ns 1.83 0.03 2 0.0032 80 B 1.00
MapperlyMap 14.03 ns 5.696 ns 0.312 ns 13.67 ns 14.20 ns 14.22 ns 1.01 0.02 1 0.0032 80 B 1.00
AgileMapper 344.51 ns 45.051 ns 2.469 ns 343.04 ns 343.13 ns 347.36 ns 24.74 0.15 4 0.0134 344 B 4.30
EggMapperGenerator 16.14 ns 3.954 ns 0.217 ns 15.89 ns 16.24 ns 16.29 ns 1.16 0.01 1 0.0032 80 B 1.00
EggMapperClassMapper 15.45 ns 0.544 ns 0.030 ns 15.42 ns 15.44 ns 15.48 ns 1.11 0.00 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.36 ns 4.951 ns 0.271 ns 18.17 ns 18.24 ns 18.67 ns 1.00 0.02 1 0.0032 80 B 1.00
EggMap 33.84 ns 6.498 ns 0.356 ns 33.45 ns 33.93 ns 34.15 ns 1.84 0.03 3 0.0032 80 B 1.00
AutoMapper 69.01 ns 4.487 ns 0.246 ns 68.77 ns 69.00 ns 69.26 ns 3.76 0.05 4 0.0031 80 B 1.00
Mapster 38.06 ns 22.276 ns 1.221 ns 36.66 ns 38.69 ns 38.85 ns 2.07 0.06 3 0.0032 80 B 1.00
MapperlyMap 22.57 ns 1.879 ns 0.103 ns 22.48 ns 22.56 ns 22.68 ns 1.23 0.02 2 0.0041 104 B 1.30
AgileMapper 347.65 ns 19.234 ns 1.054 ns 346.45 ns 348.07 ns 348.42 ns 18.94 0.25 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 53.53 ns 7.881 ns 0.432 ns 53.07 ns 53.61 ns 53.93 ns 1.00 0.01 1 0.0108 272 B 1.00
EggMapper 68.77 ns 43.218 ns 2.369 ns 67.35 ns 67.45 ns 71.50 ns 1.28 0.04 2 0.0107 272 B 1.00
AutoMapper 103.51 ns 35.816 ns 1.963 ns 102.32 ns 102.43 ns 105.77 ns 1.93 0.03 3 0.0107 272 B 1.00
Mapster 69.76 ns 31.546 ns 1.729 ns 67.89 ns 70.10 ns 71.30 ns 1.30 0.03 2 0.0107 272 B 1.00
MapperlyMap 51.73 ns 17.280 ns 0.947 ns 50.71 ns 51.92 ns 52.57 ns 0.97 0.02 1 0.0108 272 B 1.00
AgileMapper 376.83 ns 39.073 ns 2.142 ns 375.23 ns 375.99 ns 379.26 ns 7.04 0.06 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 70.24 ns 17.411 ns 0.954 ns 69.20 ns 70.44 ns 71.08 ns 1.00 0.02 1 0.0126 320 B 1.00
EggMapper 87.07 ns 9.030 ns 0.495 ns 86.61 ns 87.00 ns 87.60 ns 1.24 0.02 2 0.0126 320 B 1.00
AutoMapper 139.83 ns 29.095 ns 1.595 ns 138.22 ns 139.87 ns 141.41 ns 1.99 0.03 3 0.0129 328 B 1.02
Mapster 86.20 ns 8.571 ns 0.470 ns 85.74 ns 86.17 ns 86.68 ns 1.23 0.02 2 0.0126 320 B 1.00
MapperlyMap 66.37 ns 16.950 ns 0.929 ns 65.76 ns 65.91 ns 67.44 ns 0.95 0.02 1 0.0126 320 B 1.00
AgileMapper 413.20 ns 79.414 ns 4.353 ns 408.96 ns 412.97 ns 417.66 ns 5.88 0.09 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.729 μs 0.6941 μs 0.0380 μs 1.687 μs 1.740 μs 1.760 μs 1.00 0.03 1 0.3529 0.0114 8.65 KB 1.00
EggMapper 1.784 μs 0.3766 μs 0.0206 μs 1.763 μs 1.787 μs 1.804 μs 1.03 0.02 1 0.3529 0.0114 8.65 KB 1.00
AutoMapper 2.281 μs 0.7349 μs 0.0403 μs 2.254 μs 2.263 μs 2.328 μs 1.32 0.03 1 0.4044 0.0114 9.95 KB 1.15
Mapster 1.733 μs 0.2476 μs 0.0136 μs 1.718 μs 1.740 μs 1.743 μs 1.00 0.02 1 0.3529 0.0114 8.65 KB 1.00
MapperlyMap 1.948 μs 0.6367 μs 0.0349 μs 1.913 μs 1.947 μs 1.983 μs 1.13 0.03 1 0.3510 0.0076 8.65 KB 1.00
AgileMapper 2.403 μs 0.8114 μs 0.0445 μs 2.357 μs 2.405 μs 2.446 μs 1.39 0.03 1 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.157 μs 1.0703 μs 0.0587 μs 5.093 μs 5.170 μs 5.209 μs 1.00 0.01 1 1.1139 0.0610 27.4 KB 1.00
EggMapper 5.527 μs 0.4490 μs 0.0246 μs 5.502 μs 5.529 μs 5.551 μs 1.07 0.01 1 1.1139 0.0610 27.4 KB 1.00
AutoMapper 6.678 μs 1.5496 μs 0.0849 μs 6.590 μs 6.686 μs 6.759 μs 1.29 0.02 1 1.1673 0.0687 28.7 KB 1.05
Mapster 5.913 μs 0.9744 μs 0.0534 μs 5.877 μs 5.887 μs 5.974 μs 1.15 0.01 1 1.1139 0.0610 27.4 KB 1.00
MapperlyMap 5.251 μs 1.4671 μs 0.0804 μs 5.163 μs 5.269 μs 5.321 μs 1.02 0.02 1 1.1139 0.0610 27.42 KB 1.00
AgileMapper 5.077 μs 0.8424 μs 0.0462 μs 5.024 μs 5.103 μs 5.105 μs 0.98 0.01 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 16.40 μs 1.987 μs 0.109 μs 16.30 μs 16.39 μs 16.52 μs 1.00 0.01 1 3.4790 0.8545 85.99 KB 1.00
EggMapper 17.24 μs 5.666 μs 0.311 μs 17.01 μs 17.12 μs 17.60 μs 1.05 0.02 1 3.4790 0.8545 85.99 KB 1.00
AutoMapper 21.69 μs 4.333 μs 0.237 μs 21.42 μs 21.79 μs 21.87 μs 1.32 0.01 1 3.8452 0.9460 94.34 KB 1.10
Mapster 16.57 μs 1.290 μs 0.071 μs 16.50 μs 16.58 μs 16.64 μs 1.01 0.01 1 3.4790 0.8545 85.99 KB 1.00
MapperlyMap 17.48 μs 1.879 μs 0.103 μs 17.41 μs 17.43 μs 17.60 μs 1.07 0.01 1 3.5095 0.8545 86.02 KB 1.00
AgileMapper 19.57 μs 1.272 μs 0.070 μs 19.50 μs 19.56 μs 19.64 μs 1.19 0.01 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,333.469 μs 1,043.6032 μs 57.2034 μs 1,279.798 μs 1,326.959 μs 1,393.648 μs 1.001 0.05 3 3.9063 1.9531 95.98 KB 1.00
AutoMapperStartup 403.881 μs 656.1822 μs 35.9676 μs 367.585 μs 404.549 μs 439.510 μs 0.303 0.03 2 3.9063 - 104.07 KB 1.08
MapsterStartup 2.779 μs 0.2079 μs 0.0114 μs 2.766 μs 2.785 μs 2.786 μ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.346 ms 2.086 ms 0.1144 ms 1.220 ms 1.377 ms 1.443 ms 1.00 0.11 1 3.9063 1.9531 96.06 KB 1.00
AutoMapper 3.766 ms 8.053 ms 0.4414 ms 3.410 ms 3.627 ms 4.260 ms 2.81 0.36 2 7.8125 - 310.24 KB 3.23
Mapster 4.232 ms 9.048 ms 0.4960 ms 3.686 ms 4.354 ms 4.655 ms 3.16 0.40 2 23.4375 15.6250 757.4 KB 7.88

📝 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