Skip to content

chore: update benchmark results in README#90

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

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

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #132.

@cloud-hai-vo cloud-hai-vo enabled auto-merge (squash) March 27, 2026 04:16
@cloud-hai-vo cloud-hai-vo merged commit 32c3f73 into main Mar 27, 2026
5 checks passed
@cloud-hai-vo cloud-hai-vo deleted the chore/update-benchmarks-20260327-041616 branch March 27, 2026 04:17
@github-actions
Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Generated: 2026-03-27 04:23 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.01 ns 5.007 ns 0.274 ns 15.69 ns 16.13 ns 16.20 ns 1.00 0.02 1 0.0048 80 B 1.00
EggMapper 26.05 ns 5.957 ns 0.327 ns 25.68 ns 26.23 ns 26.25 ns 1.63 0.03 2 0.0048 80 B 1.00
AutoMapper 84.56 ns 2.563 ns 0.140 ns 84.40 ns 84.62 ns 84.66 ns 5.28 0.08 3 0.0048 80 B 1.00
Mapster 29.41 ns 4.893 ns 0.268 ns 29.17 ns 29.36 ns 29.70 ns 1.84 0.03 2 0.0048 80 B 1.00
MapperlyMap 15.92 ns 11.150 ns 0.611 ns 15.24 ns 16.08 ns 16.44 ns 0.99 0.04 1 0.0048 80 B 1.00
AgileMapper 508.58 ns 73.364 ns 4.021 ns 505.94 ns 506.59 ns 513.20 ns 31.78 0.52 4 0.0200 344 B 4.30
EggMapperGenerator 15.80 ns 3.165 ns 0.173 ns 15.67 ns 15.73 ns 16.00 ns 0.99 0.02 1 0.0048 80 B 1.00
EggMapperClassMapper 15.54 ns 1.308 ns 0.072 ns 15.46 ns 15.54 ns 15.60 ns 0.97 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.27 ns 6.786 ns 0.372 ns 19.86 ns 20.35 ns 20.59 ns 1.00 0.02 1 0.0048 80 B 1.00
EggMap 30.84 ns 3.574 ns 0.196 ns 30.62 ns 30.90 ns 30.99 ns 1.52 0.03 3 0.0048 80 B 1.00
AutoMapper 91.37 ns 25.396 ns 1.392 ns 90.40 ns 90.75 ns 92.97 ns 4.51 0.09 4 0.0048 80 B 1.00
Mapster 36.95 ns 3.788 ns 0.208 ns 36.72 ns 37.03 ns 37.11 ns 1.82 0.03 3 0.0048 80 B 1.00
MapperlyMap 24.62 ns 3.449 ns 0.189 ns 24.41 ns 24.68 ns 24.77 ns 1.21 0.02 2 0.0062 104 B 1.30
AgileMapper 519.72 ns 33.343 ns 1.828 ns 517.92 ns 519.68 ns 521.57 ns 25.65 0.42 5 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.77 ns 15.983 ns 0.876 ns 56.76 ns 58.28 ns 58.28 ns 1.00 0.02 1 0.0162 272 B 1.00
EggMapper 68.04 ns 10.367 ns 0.568 ns 67.38 ns 68.36 ns 68.37 ns 1.18 0.02 1 0.0162 272 B 1.00
AutoMapper 123.81 ns 13.307 ns 0.729 ns 123.01 ns 123.99 ns 124.44 ns 2.14 0.03 2 0.0162 272 B 1.00
Mapster 69.35 ns 23.320 ns 1.278 ns 67.88 ns 70.07 ns 70.12 ns 1.20 0.02 1 0.0162 272 B 1.00
MapperlyMap 52.25 ns 11.218 ns 0.615 ns 51.58 ns 52.38 ns 52.79 ns 0.90 0.02 1 0.0162 272 B 1.00
AgileMapper 513.19 ns 2.224 ns 0.122 ns 513.05 ns 513.25 ns 513.27 ns 8.88 0.12 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 70.95 ns 17.974 ns 0.985 ns 69.85 ns 71.27 ns 71.74 ns 1.00 0.02 1 0.0191 320 B 1.00
EggMapper 107.21 ns 15.888 ns 0.871 ns 106.69 ns 106.72 ns 108.21 ns 1.51 0.02 2 0.0191 320 B 1.00
AutoMapper 159.48 ns 30.605 ns 1.678 ns 158.29 ns 158.75 ns 161.40 ns 2.25 0.03 3 0.0196 328 B 1.02
Mapster 93.39 ns 7.412 ns 0.406 ns 92.99 ns 93.39 ns 93.80 ns 1.32 0.02 2 0.0191 320 B 1.00
MapperlyMap 89.89 ns 24.704 ns 1.354 ns 88.99 ns 89.24 ns 91.45 ns 1.27 0.02 2 0.0191 320 B 1.00
AgileMapper 579.81 ns 35.503 ns 1.946 ns 578.58 ns 578.79 ns 582.05 ns 8.17 0.10 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.787 μs 0.2314 μs 0.0127 μs 1.775 μs 1.785 μs 1.800 μs 1.00 0.01 1 0.5283 0.0172 8.65 KB 1.00
EggMapper 1.658 μs 0.2837 μs 0.0155 μs 1.640 μs 1.666 μs 1.668 μs 0.93 0.01 1 0.5283 0.0172 8.65 KB 1.00
AutoMapper 2.287 μs 0.4824 μs 0.0264 μs 2.262 μs 2.286 μs 2.315 μs 1.28 0.02 2 0.6065 0.0191 9.95 KB 1.15
Mapster 1.782 μs 0.1593 μs 0.0087 μs 1.776 μs 1.777 μs 1.792 μs 1.00 0.01 1 0.5283 0.0172 8.65 KB 1.00
MapperlyMap 1.891 μs 0.6323 μs 0.0347 μs 1.856 μs 1.892 μs 1.925 μs 1.06 0.02 1 0.5283 0.0172 8.65 KB 1.00
AgileMapper 2.643 μs 0.1338 μs 0.0073 μs 2.639 μs 2.639 μs 2.652 μs 1.48 0.01 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.532 μs 0.4694 μs 0.0257 μs 5.505 μs 5.534 μs 5.557 μs 1.00 0.01 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 5.908 μs 3.2619 μs 0.1788 μs 5.702 μs 5.997 μs 6.024 μs 1.07 0.03 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 6.963 μs 1.0369 μs 0.0568 μs 6.908 μs 6.958 μs 7.022 μs 1.26 0.01 1 1.7548 0.1068 28.7 KB 1.05
Mapster 6.163 μs 1.2484 μs 0.0684 μs 6.091 μs 6.169 μs 6.227 μs 1.11 0.01 1 1.6708 0.0916 27.4 KB 1.00
MapperlyMap 5.425 μs 1.3921 μs 0.0763 μs 5.343 μs 5.438 μs 5.494 μs 0.98 0.01 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 5.283 μs 1.0585 μs 0.0580 μs 5.240 μs 5.261 μs 5.349 μs 0.96 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 18.24 μs 4.894 μs 0.268 μs 17.98 μs 18.24 μs 18.52 μs 1.00 0.02 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 17.56 μs 4.980 μs 0.273 μs 17.28 μs 17.56 μs 17.83 μs 0.96 0.02 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 22.91 μs 5.562 μs 0.305 μs 22.56 μs 23.06 μs 23.12 μs 1.26 0.02 1 5.7678 1.4343 94.34 KB 1.10
Mapster 19.16 μs 2.916 μs 0.160 μs 18.98 μs 19.19 μs 19.30 μs 1.05 0.02 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 19.94 μs 2.323 μs 0.127 μs 19.82 μs 19.94 μs 20.07 μs 1.09 0.02 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 22.04 μs 2.600 μs 0.143 μs 21.90 μs 22.02 μs 22.18 μs 1.21 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,327.471 μs 850.1570 μs 46.6000 μs 1,289.298 μs 1,313.714 μs 1,379.401 μs 1.001 0.04 3 5.8594 - 95.62 KB 1.00
AutoMapperStartup 428.081 μs 235.2054 μs 12.8924 μs 414.024 μs 430.866 μs 439.354 μs 0.323 0.01 2 5.8594 - 104.2 KB 1.09
MapsterStartup 2.593 μs 0.3758 μs 0.0206 μs 2.578 μs 2.585 μs 2.616 μ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.328 ms 1.611 ms 0.0883 ms 1.229 ms 1.355 ms 1.400 ms 1.00 0.08 1 5.8594 3.9063 96.44 KB 1.00
AutoMapper 3.956 ms 9.406 ms 0.5156 ms 3.595 ms 3.727 ms 4.546 ms 2.99 0.38 2 15.6250 7.8125 310.14 KB 3.22
Mapster 4.336 ms 10.191 ms 0.5586 ms 3.810 ms 4.275 ms 4.923 ms 3.27 0.41 2 39.0625 15.6250 758.19 KB 7.86

📝 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