Skip to content

chore: update benchmark results in README#125

Closed
cloud-hai-vo wants to merge 1 commit into
mainfrom
chore/update-benchmarks-20260502-091144
Closed

chore: update benchmark results in README#125
cloud-hai-vo wants to merge 1 commit into
mainfrom
chore/update-benchmarks-20260502-091144

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #181.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 2, 2026

📊 Benchmark Results

Generated: 2026-05-02 09:18 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 16.18 ns 13.971 ns 0.766 ns 15.45 ns 16.11 ns 16.97 ns 1.00 0.06 1 0.0048 80 B 1.00
EggMapper 25.97 ns 5.828 ns 0.319 ns 25.69 ns 25.90 ns 26.32 ns 1.61 0.07 2 0.0048 80 B 1.00
AutoMapper 87.60 ns 3.614 ns 0.198 ns 87.38 ns 87.63 ns 87.77 ns 5.42 0.22 3 0.0048 80 B 1.00
Mapster 29.36 ns 12.565 ns 0.689 ns 28.68 ns 29.33 ns 30.06 ns 1.82 0.08 2 0.0048 80 B 1.00
MapperlyMap 16.09 ns 3.522 ns 0.193 ns 15.88 ns 16.15 ns 16.25 ns 1.00 0.04 1 0.0048 80 B 1.00
AgileMapper 513.91 ns 36.185 ns 1.983 ns 512.32 ns 513.29 ns 516.13 ns 31.81 1.30 4 0.0200 344 B 4.30
EggMapperGenerator 16.73 ns 13.979 ns 0.766 ns 16.20 ns 16.38 ns 17.61 ns 1.04 0.06 1 0.0048 80 B 1.00
EggMapperClassMapper 16.18 ns 2.337 ns 0.128 ns 16.06 ns 16.17 ns 16.31 ns 1.00 0.04 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 20.23 ns 6.544 ns 0.359 ns 19.87 ns 20.23 ns 20.59 ns 1.00 0.02 1 0.0048 80 B 1.00
EggMap 32.12 ns 36.331 ns 1.991 ns 30.88 ns 31.06 ns 34.41 ns 1.59 0.09 3 0.0048 80 B 1.00
AutoMapper 87.34 ns 0.788 ns 0.043 ns 87.30 ns 87.34 ns 87.38 ns 4.32 0.07 5 0.0048 80 B 1.00
Mapster 37.63 ns 6.449 ns 0.353 ns 37.33 ns 37.55 ns 38.02 ns 1.86 0.03 4 0.0048 80 B 1.00
MapperlyMap 25.50 ns 5.945 ns 0.326 ns 25.12 ns 25.66 ns 25.70 ns 1.26 0.02 2 0.0062 104 B 1.30
AgileMapper 508.29 ns 13.547 ns 0.743 ns 507.49 ns 508.42 ns 508.96 ns 25.13 0.39 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 57.61 ns 9.511 ns 0.521 ns 57.04 ns 57.72 ns 58.07 ns 1.00 0.01 1 0.0162 272 B 1.00
EggMapper 68.23 ns 32.144 ns 1.762 ns 66.23 ns 68.90 ns 69.56 ns 1.18 0.03 1 0.0162 272 B 1.00
AutoMapper 127.50 ns 7.564 ns 0.415 ns 127.02 ns 127.72 ns 127.76 ns 2.21 0.02 2 0.0162 272 B 1.00
Mapster 71.09 ns 9.541 ns 0.523 ns 70.72 ns 70.86 ns 71.69 ns 1.23 0.01 1 0.0162 272 B 1.00
MapperlyMap 53.49 ns 7.581 ns 0.416 ns 53.01 ns 53.70 ns 53.77 ns 0.93 0.01 1 0.0162 272 B 1.00
AgileMapper 515.91 ns 85.139 ns 4.667 ns 510.96 ns 516.53 ns 520.23 ns 8.96 0.10 3 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 75.21 ns 20.182 ns 1.106 ns 73.94 ns 75.77 ns 75.93 ns 1.00 0.02 1 0.0191 320 B 1.00
EggMapper 93.77 ns 33.030 ns 1.811 ns 91.77 ns 94.22 ns 95.31 ns 1.25 0.03 2 0.0191 320 B 1.00
AutoMapper 161.06 ns 8.100 ns 0.444 ns 160.56 ns 161.19 ns 161.42 ns 2.14 0.03 3 0.0196 328 B 1.02
Mapster 94.66 ns 32.789 ns 1.797 ns 92.59 ns 95.65 ns 95.75 ns 1.26 0.03 2 0.0191 320 B 1.00
MapperlyMap 75.18 ns 13.763 ns 0.754 ns 74.33 ns 75.43 ns 75.77 ns 1.00 0.02 1 0.0191 320 B 1.00
AgileMapper 587.33 ns 51.592 ns 2.828 ns 585.21 ns 586.24 ns 590.54 ns 7.81 0.11 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.814 μs 2.1426 μs 0.1174 μs 1.718 μs 1.779 μs 1.945 μs 1.00 0.08 1 0.5283 0.0172 8.65 KB 1.00
EggMapper 1.808 μs 0.3868 μs 0.0212 μs 1.784 μs 1.817 μs 1.824 μs 1.00 0.06 1 0.5283 0.0172 8.65 KB 1.00
AutoMapper 2.505 μs 1.1067 μs 0.0607 μs 2.440 μs 2.518 μs 2.559 μs 1.38 0.08 2 0.6065 0.0191 9.95 KB 1.15
Mapster 1.895 μs 0.2856 μs 0.0157 μs 1.878 μs 1.900 μs 1.908 μs 1.05 0.06 1 0.5283 0.0172 8.65 KB 1.00
MapperlyMap 1.945 μs 1.0987 μs 0.0602 μs 1.876 μs 1.970 μs 1.988 μs 1.07 0.07 1 0.5264 0.0153 8.65 KB 1.00
AgileMapper 2.663 μs 0.7668 μs 0.0420 μs 2.617 μs 2.672 μs 2.700 μs 1.47 0.08 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.526 μs 0.8392 μs 0.0460 μs 5.498 μs 5.501 μs 5.579 μs 1.00 0.01 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 6.121 μs 0.9912 μs 0.0543 μs 6.061 μs 6.133 μs 6.167 μs 1.11 0.01 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 7.068 μs 2.5224 μs 0.1383 μs 6.911 μs 7.125 μs 7.169 μs 1.28 0.02 1 1.7548 0.1068 28.7 KB 1.05
Mapster 6.324 μs 2.3766 μs 0.1303 μs 6.204 μs 6.306 μs 6.463 μs 1.14 0.02 1 1.6708 0.0916 27.4 KB 1.00
MapperlyMap 6.161 μs 1.3311 μs 0.0730 μs 6.103 μs 6.137 μs 6.243 μs 1.11 0.01 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 5.727 μs 1.7560 μs 0.0963 μs 5.629 μs 5.730 μs 5.821 μs 1.04 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 17.74 μs 3.108 μs 0.170 μs 17.58 μs 17.72 μs 17.92 μs 1.00 0.01 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 18.03 μs 4.855 μs 0.266 μs 17.72 μs 18.17 μs 18.19 μs 1.02 0.02 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 22.52 μs 14.378 μs 0.788 μs 21.68 μs 22.64 μs 23.24 μs 1.27 0.04 1 5.7678 1.4343 94.34 KB 1.10
Mapster 18.00 μs 5.669 μs 0.311 μs 17.64 μs 18.18 μs 18.18 μs 1.01 0.02 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 19.57 μs 6.054 μs 0.332 μs 19.20 μs 19.66 μs 19.85 μs 1.10 0.02 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 21.14 μs 10.650 μs 0.584 μs 20.74 μs 20.87 μs 21.81 μs 1.19 0.03 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,373.583 μs 1,163.7488 μs 63.7890 μs 1,314.076 μs 1,365.743 μs 1,440.930 μs 1.001 0.06 3 5.8594 - 95.67 KB 1.00
AutoMapperStartup 460.038 μs 765.0192 μs 41.9333 μs 417.447 μs 461.386 μs 501.281 μs 0.335 0.03 2 5.8594 - 104.04 KB 1.09
MapsterStartup 2.591 μs 0.7054 μs 0.0387 μs 2.549 μs 2.599 μs 2.625 μ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.383 ms 1.922 ms 0.1054 ms 1.273 ms 1.394 ms 1.483 ms 1.00 0.09 1 5.8594 3.9063 96.21 KB 1.00
AutoMapper 3.901 ms 10.006 ms 0.5485 ms 3.394 ms 3.825 ms 4.483 ms 2.83 0.39 2 15.6250 7.8125 309.84 KB 3.22
Mapster 4.752 ms 6.316 ms 0.3462 ms 4.362 ms 4.872 ms 5.023 ms 3.45 0.32 3 46.8750 15.6250 766.15 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 deleted the chore/update-benchmarks-20260502-091144 branch May 2, 2026 09:28
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