Skip to content

chore: update benchmark results in README#126

Merged
cloud-hai-vo merged 1 commit into
mainfrom
chore/update-benchmarks-20260502-092824
May 2, 2026
Merged

chore: update benchmark results in README#126
cloud-hai-vo merged 1 commit into
mainfrom
chore/update-benchmarks-20260502-092824

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #183.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 2, 2026

📊 Benchmark Results

Generated: 2026-05-02 09:35 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.56 ns 6.188 ns 0.339 ns 16.22 ns 16.57 ns 16.89 ns 1.00 0.03 1 0.0048 80 B 1.00
EggMapper 28.34 ns 5.515 ns 0.302 ns 28.04 ns 28.35 ns 28.64 ns 1.71 0.03 2 0.0048 80 B 1.00
AutoMapper 78.03 ns 1.457 ns 0.080 ns 77.98 ns 77.99 ns 78.12 ns 4.71 0.08 3 0.0048 80 B 1.00
Mapster 30.16 ns 12.292 ns 0.674 ns 29.66 ns 29.90 ns 30.93 ns 1.82 0.05 2 0.0048 80 B 1.00
MapperlyMap 16.96 ns 6.550 ns 0.359 ns 16.55 ns 17.10 ns 17.23 ns 1.02 0.03 1 0.0048 80 B 1.00
AgileMapper 335.06 ns 4.262 ns 0.234 ns 334.92 ns 334.93 ns 335.33 ns 20.24 0.36 4 0.0205 344 B 4.30
EggMapperGenerator 17.55 ns 4.653 ns 0.255 ns 17.27 ns 17.61 ns 17.77 ns 1.06 0.02 1 0.0048 80 B 1.00
EggMapperClassMapper 18.52 ns 2.348 ns 0.129 ns 18.38 ns 18.54 ns 18.64 ns 1.12 0.02 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.62 ns 2.793 ns 0.153 ns 20.47 ns 20.63 ns 20.77 ns 1.00 0.01 1 0.0048 80 B 1.00
EggMap 32.85 ns 20.932 ns 1.147 ns 32.05 ns 32.34 ns 34.17 ns 1.59 0.05 2 0.0048 80 B 1.00
AutoMapper 83.54 ns 7.134 ns 0.391 ns 83.28 ns 83.34 ns 83.99 ns 4.05 0.03 3 0.0048 80 B 1.00
Mapster 36.22 ns 4.587 ns 0.251 ns 36.06 ns 36.09 ns 36.51 ns 1.76 0.02 2 0.0048 80 B 1.00
MapperlyMap 27.22 ns 3.346 ns 0.183 ns 27.02 ns 27.26 ns 27.37 ns 1.32 0.01 2 0.0062 104 B 1.30
AgileMapper 332.47 ns 33.886 ns 1.857 ns 331.17 ns 331.63 ns 334.59 ns 16.12 0.13 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 60.00 ns 15.141 ns 0.830 ns 59.05 ns 60.37 ns 60.57 ns 1.00 0.02 1 0.0162 272 B 1.00
EggMapper 73.51 ns 7.625 ns 0.418 ns 73.27 ns 73.28 ns 74.00 ns 1.23 0.02 1 0.0162 272 B 1.00
AutoMapper 112.15 ns 16.524 ns 0.906 ns 111.42 ns 111.87 ns 113.16 ns 1.87 0.03 2 0.0162 272 B 1.00
Mapster 75.24 ns 28.610 ns 1.568 ns 73.43 ns 76.11 ns 76.18 ns 1.25 0.03 1 0.0162 272 B 1.00
MapperlyMap 61.42 ns 3.956 ns 0.217 ns 61.18 ns 61.53 ns 61.57 ns 1.02 0.01 1 0.0162 272 B 1.00
AgileMapper 374.34 ns 8.832 ns 0.484 ns 373.92 ns 374.24 ns 374.87 ns 6.24 0.08 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 80.57 ns 26.893 ns 1.474 ns 78.90 ns 81.09 ns 81.70 ns 1.00 0.02 1 0.0191 320 B 1.00
EggMapper 105.68 ns 5.528 ns 0.303 ns 105.46 ns 105.56 ns 106.03 ns 1.31 0.02 1 0.0191 320 B 1.00
AutoMapper 151.35 ns 14.156 ns 0.776 ns 150.81 ns 150.99 ns 152.24 ns 1.88 0.03 2 0.0196 328 B 1.02
Mapster 101.49 ns 26.478 ns 1.451 ns 99.89 ns 101.88 ns 102.71 ns 1.26 0.03 1 0.0191 320 B 1.00
MapperlyMap 84.77 ns 19.715 ns 1.081 ns 84.03 ns 84.28 ns 86.01 ns 1.05 0.02 1 0.0191 320 B 1.00
AgileMapper 422.99 ns 177.653 ns 9.738 ns 413.09 ns 423.32 ns 432.56 ns 5.25 0.13 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.025 μs 1.2151 μs 0.0666 μs 1.971 μs 2.006 μs 2.100 μs 1.00 0.04 1 0.5264 0.0153 8.65 KB 1.00
EggMapper 2.150 μs 1.5231 μs 0.0835 μs 2.061 μs 2.164 μs 2.226 μs 1.06 0.05 1 0.5264 0.0153 8.65 KB 1.00
AutoMapper 2.553 μs 0.8315 μs 0.0456 μs 2.504 μs 2.559 μs 2.594 μs 1.26 0.04 1 0.6065 0.0191 9.95 KB 1.15
Mapster 2.046 μs 0.6996 μs 0.0383 μs 2.007 μs 2.047 μs 2.084 μs 1.01 0.03 1 0.5264 0.0153 8.65 KB 1.00
MapperlyMap 2.240 μs 0.5902 μs 0.0323 μs 2.204 μs 2.248 μs 2.267 μs 1.11 0.03 1 0.5264 0.0153 8.65 KB 1.00
AgileMapper 3.084 μs 0.2639 μs 0.0145 μs 3.069 μs 3.085 μs 3.098 μs 1.52 0.04 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 6.297 μs 0.8301 μs 0.0455 μs 6.252 μs 6.296 μs 6.343 μs 1.00 0.01 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 7.077 μs 2.5824 μs 0.1416 μs 6.925 μs 7.102 μs 7.205 μs 1.12 0.02 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 8.146 μs 1.6843 μs 0.0923 μs 8.041 μs 8.182 μs 8.215 μs 1.29 0.02 1 1.7548 0.1068 28.7 KB 1.05
Mapster 7.520 μs 2.2581 μs 0.1238 μs 7.412 μs 7.494 μs 7.655 μs 1.19 0.02 1 1.6632 0.0916 27.4 KB 1.00
MapperlyMap 7.259 μs 0.9384 μs 0.0514 μs 7.212 μs 7.251 μs 7.314 μs 1.15 0.01 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 5.974 μs 3.8573 μs 0.2114 μs 5.742 μs 6.025 μs 6.156 μs 0.95 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 25.61 μs 9.753 μs 0.535 μs 25.20 μs 25.41 μs 26.22 μs 1.00 0.03 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 23.49 μs 10.610 μs 0.582 μs 22.84 μs 23.68 μs 23.96 μs 0.92 0.03 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 27.36 μs 14.618 μs 0.801 μs 26.44 μs 27.73 μs 27.90 μs 1.07 0.03 1 5.7678 1.4343 94.34 KB 1.10
Mapster 22.91 μs 3.016 μs 0.165 μs 22.75 μs 22.91 μs 23.08 μs 0.89 0.02 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 23.58 μs 6.089 μs 0.334 μs 23.33 μs 23.47 μs 23.96 μs 0.92 0.02 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 25.72 μs 6.206 μs 0.340 μs 25.47 μs 25.58 μs 26.10 μs 1.00 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,407.678 μs 2,410.364 μs 132.1202 μs 1,256.128 μs 1,468.287 μs 1,498.620 μs 1.006 0.12 3 3.9063 1.9531 95.18 KB 1.00
AutoMapperStartup 408.211 μs 692.071 μs 37.9347 μs 371.559 μs 405.763 μs 447.310 μs 0.292 0.03 2 5.8594 - 104.67 KB 1.10
MapsterStartup 3.123 μs 2.608 μs 0.1430 μs 3.013 μs 3.072 μs 3.285 μ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.358 ms 1.771 ms 0.0971 ms 1.246 ms 1.405 ms 1.422 ms 1.00 0.09 1 3.9063 1.9531 95.39 KB 1.00
AutoMapper 4.185 ms 11.009 ms 0.6034 ms 3.587 ms 4.175 ms 4.794 ms 3.09 0.44 2 15.6250 7.8125 310.28 KB 3.25
Mapster 4.411 ms 8.539 ms 0.4680 ms 3.874 ms 4.626 ms 4.733 ms 3.26 0.37 2 46.8750 15.6250 765.62 KB 8.03

📝 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 786714f into main May 2, 2026
4 checks passed
@cloud-hai-vo cloud-hai-vo deleted the chore/update-benchmarks-20260502-092824 branch May 2, 2026 10:40
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