Skip to content

chore: update benchmark results in README#122

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

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

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #176.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 2, 2026

📊 Benchmark Results

Generated: 2026-05-02 04:59 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.85 ns 0.952 ns 0.052 ns 15.79 ns 15.86 ns 15.89 ns 1.00 0.00 1 0.0048 80 B 1.00
EggMapper 27.89 ns 5.653 ns 0.310 ns 27.57 ns 27.91 ns 28.19 ns 1.76 0.02 2 0.0048 80 B 1.00
AutoMapper 81.17 ns 1.747 ns 0.096 ns 81.09 ns 81.15 ns 81.28 ns 5.12 0.02 3 0.0048 80 B 1.00
Mapster 29.07 ns 0.685 ns 0.038 ns 29.03 ns 29.09 ns 29.10 ns 1.83 0.01 2 0.0048 80 B 1.00
MapperlyMap 16.01 ns 1.390 ns 0.076 ns 15.94 ns 16.00 ns 16.09 ns 1.01 0.01 1 0.0048 80 B 1.00
AgileMapper 331.57 ns 13.166 ns 0.722 ns 331.07 ns 331.25 ns 332.40 ns 20.93 0.07 4 0.0205 344 B 4.30
EggMapperGenerator 16.87 ns 6.699 ns 0.367 ns 16.50 ns 16.89 ns 17.23 ns 1.06 0.02 1 0.0048 80 B 1.00
EggMapperClassMapper 16.71 ns 0.734 ns 0.040 ns 16.67 ns 16.71 ns 16.75 ns 1.05 0.00 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.27 ns 2.477 ns 0.136 ns 20.16 ns 20.22 ns 20.42 ns 1.00 0.01 1 0.0048 80 B 1.00
EggMap 30.63 ns 1.994 ns 0.109 ns 30.54 ns 30.61 ns 30.75 ns 1.51 0.01 2 0.0048 80 B 1.00
AutoMapper 82.20 ns 2.233 ns 0.122 ns 82.12 ns 82.14 ns 82.34 ns 4.06 0.02 3 0.0048 80 B 1.00
Mapster 35.56 ns 0.699 ns 0.038 ns 35.52 ns 35.55 ns 35.60 ns 1.75 0.01 2 0.0048 80 B 1.00
MapperlyMap 25.59 ns 0.504 ns 0.028 ns 25.56 ns 25.60 ns 25.61 ns 1.26 0.01 2 0.0062 104 B 1.30
AgileMapper 341.29 ns 63.398 ns 3.475 ns 338.04 ns 340.89 ns 344.95 ns 16.84 0.18 4 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 64.04 ns 7.893 ns 0.433 ns 63.57 ns 64.14 ns 64.42 ns 1.00 0.01 1 0.0162 272 B 1.00
EggMapper 71.33 ns 5.521 ns 0.303 ns 71.02 ns 71.35 ns 71.62 ns 1.11 0.01 1 0.0162 272 B 1.00
AutoMapper 110.94 ns 5.818 ns 0.319 ns 110.58 ns 111.12 ns 111.13 ns 1.73 0.01 2 0.0162 272 B 1.00
Mapster 74.00 ns 9.894 ns 0.542 ns 73.58 ns 73.80 ns 74.61 ns 1.16 0.01 1 0.0162 272 B 1.00
MapperlyMap 54.44 ns 4.759 ns 0.261 ns 54.17 ns 54.45 ns 54.70 ns 0.85 0.01 1 0.0162 272 B 1.00
AgileMapper 355.30 ns 6.241 ns 0.342 ns 354.97 ns 355.29 ns 355.65 ns 5.55 0.03 3 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 81.49 ns 23.972 ns 1.314 ns 79.99 ns 82.07 ns 82.42 ns 1.00 0.02 1 0.0191 320 B 1.00
EggMapper 103.73 ns 3.297 ns 0.181 ns 103.61 ns 103.64 ns 103.94 ns 1.27 0.02 1 0.0191 320 B 1.00
AutoMapper 155.28 ns 20.028 ns 1.098 ns 154.26 ns 155.14 ns 156.45 ns 1.91 0.03 2 0.0196 328 B 1.02
Mapster 103.05 ns 12.356 ns 0.677 ns 102.48 ns 102.88 ns 103.80 ns 1.26 0.02 1 0.0191 320 B 1.00
MapperlyMap 87.39 ns 9.107 ns 0.499 ns 86.92 ns 87.33 ns 87.91 ns 1.07 0.02 1 0.0191 320 B 1.00
AgileMapper 416.93 ns 33.093 ns 1.814 ns 415.01 ns 417.18 ns 418.61 ns 5.12 0.07 3 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 2.021 μs 1.6778 μs 0.0920 μs 1.915 μs 2.068 μs 2.080 μs 1.00 0.06 1 0.5264 0.0153 8.65 KB 1.00
EggMapper 2.137 μs 0.6968 μs 0.0382 μs 2.096 μs 2.144 μs 2.172 μs 1.06 0.05 1 0.5264 0.0153 8.65 KB 1.00
AutoMapper 2.691 μs 2.0362 μs 0.1116 μs 2.602 μs 2.654 μs 2.816 μs 1.33 0.07 1 0.6065 0.0191 9.95 KB 1.15
Mapster 2.301 μs 0.6461 μs 0.0354 μs 2.280 μs 2.281 μs 2.342 μs 1.14 0.05 1 0.5264 0.0153 8.65 KB 1.00
MapperlyMap 2.175 μs 1.1499 μs 0.0630 μs 2.104 μs 2.196 μs 2.225 μs 1.08 0.05 1 0.5264 0.0153 8.65 KB 1.00
AgileMapper 2.766 μs 0.4826 μs 0.0265 μs 2.736 μs 2.781 μs 2.781 μs 1.37 0.06 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 6.375 μs 1.5930 μs 0.0873 μs 6.276 μs 6.409 μs 6.440 μs 1.00 0.02 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 7.468 μs 1.4490 μs 0.0794 μs 7.376 μs 7.512 μs 7.516 μs 1.17 0.02 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 7.709 μs 2.4363 μs 0.1335 μs 7.614 μs 7.651 μs 7.861 μs 1.21 0.02 1 1.7548 0.1068 28.7 KB 1.05
Mapster 7.243 μs 1.6157 μs 0.0886 μs 7.143 μs 7.276 μs 7.310 μs 1.14 0.02 1 1.6708 0.0916 27.4 KB 1.00
MapperlyMap 6.260 μs 2.2466 μs 0.1231 μs 6.124 μs 6.293 μs 6.364 μs 0.98 0.02 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 6.380 μs 0.2886 μs 0.0158 μs 6.366 μs 6.378 μs 6.397 μs 1.00 0.01 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 20.23 μs 4.400 μs 0.241 μs 20.01 μs 20.18 μs 20.49 μs 1.00 0.01 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 21.28 μs 8.156 μs 0.447 μs 20.82 μs 21.31 μs 21.71 μs 1.05 0.02 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 25.65 μs 3.923 μs 0.215 μs 25.52 μs 25.54 μs 25.90 μs 1.27 0.02 1 5.7678 1.4343 94.34 KB 1.10
Mapster 21.47 μs 8.505 μs 0.466 μs 20.94 μs 21.65 μs 21.82 μs 1.06 0.02 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 22.10 μs 1.357 μs 0.074 μs 22.03 μs 22.08 μs 22.18 μs 1.09 0.01 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 23.67 μs 1.383 μs 0.076 μs 23.59 μs 23.69 μs 23.74 μs 1.17 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,351.579 μs 1,541.394 μs 84.4890 μs 1,298.326 μs 1,307.413 μs 1,448.997 μs 1.003 0.08 3 3.9063 1.9531 95.16 KB 1.00
AutoMapperStartup 438.191 μs 1,338.267 μs 73.3549 μs 392.204 μs 399.583 μs 522.787 μs 0.325 0.05 2 5.8594 - 104.11 KB 1.09
MapsterStartup 2.544 μs 1.377 μs 0.0755 μs 2.473 μs 2.537 μs 2.623 μ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.349 ms 1.191 ms 0.0653 ms 1.293 ms 1.333 ms 1.420 ms 1.00 0.06 1 5.8594 3.9063 96.22 KB 1.00
AutoMapper 4.329 ms 10.067 ms 0.5518 ms 3.856 ms 4.195 ms 4.935 ms 3.21 0.38 2 15.6250 7.8125 310.19 KB 3.22
Mapster 4.484 ms 6.025 ms 0.3302 ms 4.108 ms 4.617 ms 4.727 ms 3.33 0.25 2 39.0625 15.6250 758.46 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 '*'

@cloud-hai-vo cloud-hai-vo deleted the chore/update-benchmarks-20260502-045226 branch May 2, 2026 08:53
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