Skip to content

chore: update benchmark results in README#124

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

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

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #179.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 2, 2026

📊 Benchmark Results

Generated: 2026-05-02 09:08 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 12.06 ns 1.213 ns 0.066 ns 11.98 ns 12.07 ns 12.12 ns 1.00 0.01 1 0.0048 80 B 1.00
EggMapper 21.46 ns 2.491 ns 0.137 ns 21.31 ns 21.52 ns 21.56 ns 1.78 0.01 2 0.0048 80 B 1.00
AutoMapper 56.98 ns 2.362 ns 0.129 ns 56.88 ns 56.94 ns 57.13 ns 4.73 0.02 3 0.0048 80 B 1.00
Mapster 22.76 ns 9.992 ns 0.548 ns 22.15 ns 22.93 ns 23.20 ns 1.89 0.04 2 0.0048 80 B 1.00
MapperlyMap 12.92 ns 1.259 ns 0.069 ns 12.84 ns 12.94 ns 12.97 ns 1.07 0.01 1 0.0048 80 B 1.00
AgileMapper 255.37 ns 113.682 ns 6.231 ns 251.57 ns 251.98 ns 262.56 ns 21.18 0.46 4 0.0205 344 B 4.30
EggMapperGenerator 13.17 ns 4.095 ns 0.224 ns 12.92 ns 13.22 ns 13.35 ns 1.09 0.02 1 0.0048 80 B 1.00
EggMapperClassMapper 13.19 ns 1.358 ns 0.074 ns 13.10 ns 13.23 ns 13.24 ns 1.09 0.01 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 15.82 ns 1.051 ns 0.058 ns 15.79 ns 15.79 ns 15.89 ns 1.00 0.00 1 0.0048 80 B 1.00
EggMap 24.28 ns 1.981 ns 0.109 ns 24.17 ns 24.29 ns 24.38 ns 1.53 0.01 3 0.0048 80 B 1.00
AutoMapper 61.78 ns 29.774 ns 1.632 ns 60.80 ns 60.88 ns 63.66 ns 3.90 0.09 4 0.0048 80 B 1.00
Mapster 27.75 ns 5.924 ns 0.325 ns 27.42 ns 27.77 ns 28.07 ns 1.75 0.02 3 0.0048 80 B 1.00
MapperlyMap 19.82 ns 1.059 ns 0.058 ns 19.76 ns 19.84 ns 19.87 ns 1.25 0.01 2 0.0062 104 B 1.30
AgileMapper 251.74 ns 60.159 ns 3.298 ns 249.84 ns 249.84 ns 255.55 ns 15.91 0.19 5 0.0205 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 46.16 ns 5.528 ns 0.303 ns 45.86 ns 46.14 ns 46.47 ns 1.00 0.01 1 0.0162 272 B 1.00
EggMapper 57.67 ns 9.803 ns 0.537 ns 57.05 ns 57.94 ns 58.01 ns 1.25 0.01 2 0.0162 272 B 1.00
AutoMapper 84.17 ns 3.173 ns 0.174 ns 83.99 ns 84.18 ns 84.33 ns 1.82 0.01 3 0.0162 272 B 1.00
Mapster 58.70 ns 4.348 ns 0.238 ns 58.44 ns 58.78 ns 58.89 ns 1.27 0.01 2 0.0162 272 B 1.00
MapperlyMap 41.76 ns 1.316 ns 0.072 ns 41.72 ns 41.72 ns 41.84 ns 0.90 0.01 1 0.0162 272 B 1.00
AgileMapper 268.69 ns 10.827 ns 0.593 ns 268.17 ns 268.56 ns 269.34 ns 5.82 0.03 4 0.0253 424 B 1.56

🟢 Complex Mapping — nested object + collection

Method Mean Error StdDev Min Median Max Ratio RatioSD Rank Gen0 Allocated Alloc Ratio
Manual 62.46 ns 9.915 ns 0.543 ns 61.84 ns 62.67 ns 62.87 ns 1.00 0.01 1 0.0191 320 B 1.00
EggMapper 82.26 ns 6.661 ns 0.365 ns 81.85 ns 82.41 ns 82.53 ns 1.32 0.01 2 0.0191 320 B 1.00
AutoMapper 116.19 ns 4.830 ns 0.265 ns 116.02 ns 116.06 ns 116.50 ns 1.86 0.01 3 0.0196 328 B 1.02
Mapster 80.02 ns 10.161 ns 0.557 ns 79.53 ns 79.92 ns 80.62 ns 1.28 0.01 2 0.0191 320 B 1.00
MapperlyMap 63.21 ns 20.626 ns 1.131 ns 61.95 ns 63.54 ns 64.14 ns 1.01 0.02 1 0.0191 320 B 1.00
AgileMapper 327.74 ns 47.226 ns 2.589 ns 325.76 ns 326.80 ns 330.67 ns 5.25 0.05 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.588 μs 0.6233 μs 0.0342 μs 1.549 μs 1.602 μs 1.613 μs 1.00 0.03 1 0.5283 0.0172 8.65 KB 1.00
EggMapper 1.731 μs 0.4480 μs 0.0246 μs 1.706 μs 1.731 μs 1.755 μs 1.09 0.02 1 0.5283 0.0172 8.65 KB 1.00
AutoMapper 2.126 μs 1.4036 μs 0.0769 μs 2.066 μs 2.098 μs 2.213 μs 1.34 0.05 1 0.6065 0.0191 9.95 KB 1.15
Mapster 1.686 μs 1.2764 μs 0.0700 μs 1.643 μs 1.648 μs 1.767 μs 1.06 0.04 1 0.5283 0.0172 8.65 KB 1.00
MapperlyMap 1.861 μs 0.5637 μs 0.0309 μs 1.825 μs 1.877 μs 1.880 μs 1.17 0.03 1 0.5283 0.0172 8.65 KB 1.00
AgileMapper 2.246 μs 1.0926 μs 0.0599 μs 2.177 μs 2.274 μs 2.287 μs 1.41 0.04 1 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 4.876 μs 3.3357 μs 0.1828 μs 4.667 μs 4.953 μs 5.008 μs 1.00 0.05 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 4.991 μs 1.5994 μs 0.0877 μs 4.913 μs 4.975 μs 5.086 μs 1.02 0.04 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 5.668 μs 0.9552 μs 0.0524 μs 5.609 μs 5.686 μs 5.710 μs 1.16 0.04 1 1.7548 0.1068 28.7 KB 1.05
Mapster 5.190 μs 1.0847 μs 0.0595 μs 5.150 μs 5.162 μs 5.258 μs 1.07 0.04 1 1.6708 0.0916 27.4 KB 1.00
MapperlyMap 4.714 μs 0.3895 μs 0.0213 μs 4.689 μs 4.724 μs 4.729 μs 0.97 0.03 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 4.488 μs 0.8720 μs 0.0478 μs 4.433 μs 4.510 μs 4.520 μs 0.92 0.03 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 15.76 μs 2.011 μs 0.110 μs 15.64 μs 15.78 μs 15.85 μs 1.00 0.01 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 15.22 μs 4.153 μs 0.228 μs 14.96 μs 15.32 μs 15.38 μs 0.97 0.01 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 19.26 μs 5.309 μs 0.291 μs 18.93 μs 19.41 μs 19.46 μs 1.22 0.02 1 5.7678 1.4343 94.34 KB 1.10
Mapster 15.12 μs 0.449 μs 0.025 μs 15.09 μs 15.12 μs 15.14 μs 0.96 0.01 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 16.74 μs 2.765 μs 0.152 μs 16.58 μs 16.75 μs 16.88 μs 1.06 0.01 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 17.27 μs 4.648 μs 0.255 μs 16.98 μs 17.37 μs 17.46 μs 1.10 0.02 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,125.117 μs 467.3572 μs 25.6174 μs 1,099.665 μs 1,124.789 μs 1,150.896 μs 1.000 0.03 3 3.9063 - 95.37 KB 1.00
AutoMapperStartup 351.703 μs 1,036.5123 μs 56.8147 μs 292.486 μs 356.858 μs 405.764 μs 0.313 0.04 2 5.8594 - 103.83 KB 1.09
MapsterStartup 1.947 μs 0.7150 μs 0.0392 μs 1.921 μs 1.927 μs 1.992 μ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.095 ms 1.169 ms 0.0641 ms 1.021 ms 1.124 ms 1.138 ms 1.00 0.07 1 5.8594 3.9063 96.16 KB 1.00
AutoMapper 3.743 ms 3.211 ms 0.1760 ms 3.548 ms 3.790 ms 3.891 ms 3.43 0.23 3 15.6250 7.8125 309.23 KB 3.22
Mapster 2.326 ms 6.218 ms 0.3408 ms 2.038 ms 2.239 ms 2.702 ms 2.13 0.29 2 42.9688 19.5313 759.26 KB 7.90

📝 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-090132 branch May 2, 2026 09:11
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