Skip to content

chore: update benchmark results in README#127

Merged
cloud-hai-vo merged 1 commit into
mainfrom
chore/update-benchmarks-20260522-142411
May 22, 2026
Merged

chore: update benchmark results in README#127
cloud-hai-vo merged 1 commit into
mainfrom
chore/update-benchmarks-20260522-142411

Conversation

@cloud-hai-vo

Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #186.

@github-actions

Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Generated: 2026-05-22 14:30 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.91 ns 2.912 ns 0.160 ns 15.74 ns 15.92 ns 16.06 ns 1.00 0.01 1 0.0048 80 B 1.00
EggMapper 25.54 ns 5.883 ns 0.322 ns 25.19 ns 25.64 ns 25.81 ns 1.61 0.02 2 0.0048 80 B 1.00
AutoMapper 87.99 ns 6.250 ns 0.343 ns 87.65 ns 87.97 ns 88.34 ns 5.53 0.05 3 0.0048 80 B 1.00
Mapster 28.18 ns 16.045 ns 0.879 ns 27.17 ns 28.69 ns 28.70 ns 1.77 0.05 2 0.0048 80 B 1.00
MapperlyMap 15.21 ns 2.703 ns 0.148 ns 15.06 ns 15.23 ns 15.35 ns 0.96 0.01 1 0.0048 80 B 1.00
AgileMapper 496.14 ns 5.170 ns 0.283 ns 495.90 ns 496.07 ns 496.46 ns 31.20 0.27 4 0.0200 344 B 4.30
EggMapperGenerator 15.35 ns 3.757 ns 0.206 ns 15.15 ns 15.33 ns 15.56 ns 0.96 0.01 1 0.0048 80 B 1.00
EggMapperClassMapper 15.89 ns 5.513 ns 0.302 ns 15.54 ns 16.06 ns 16.07 ns 1.00 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 19.51 ns 7.440 ns 0.408 ns 19.04 ns 19.72 ns 19.77 ns 1.00 0.03 1 0.0048 80 B 1.00
EggMap 32.09 ns 4.549 ns 0.249 ns 31.81 ns 32.16 ns 32.30 ns 1.65 0.03 3 0.0048 80 B 1.00
AutoMapper 91.48 ns 7.969 ns 0.437 ns 90.97 ns 91.70 ns 91.75 ns 4.69 0.09 4 0.0048 80 B 1.00
Mapster 36.71 ns 3.140 ns 0.172 ns 36.55 ns 36.69 ns 36.89 ns 1.88 0.04 3 0.0048 80 B 1.00
MapperlyMap 25.53 ns 9.371 ns 0.514 ns 24.97 ns 25.64 ns 25.98 ns 1.31 0.03 2 0.0062 104 B 1.30
AgileMapper 548.17 ns 21.275 ns 1.166 ns 546.99 ns 548.19 ns 549.32 ns 28.10 0.52 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 55.23 ns 24.29 ns 1.331 ns 54.26 ns 54.69 ns 56.75 ns 1.00 0.03 1 0.0162 272 B 1.00
EggMapper 68.31 ns 22.42 ns 1.229 ns 67.30 ns 67.95 ns 69.67 ns 1.24 0.03 2 0.0162 272 B 1.00
AutoMapper 124.65 ns 11.56 ns 0.633 ns 123.92 ns 124.94 ns 125.08 ns 2.26 0.05 3 0.0162 272 B 1.00
Mapster 66.98 ns 24.48 ns 1.342 ns 65.53 ns 67.23 ns 68.17 ns 1.21 0.03 2 0.0162 272 B 1.00
MapperlyMap 52.15 ns 34.50 ns 1.891 ns 50.29 ns 52.09 ns 54.07 ns 0.94 0.04 1 0.0162 272 B 1.00
AgileMapper 538.89 ns 27.91 ns 1.530 ns 537.93 ns 538.08 ns 540.65 ns 9.76 0.20 4 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.49 ns 40.30 ns 2.209 ns 72.94 ns 76.65 ns 76.88 ns 1.00 0.04 1 0.0191 320 B 1.00
EggMapper 100.76 ns 43.87 ns 2.405 ns 97.99 ns 102.00 ns 102.30 ns 1.34 0.04 1 0.0191 320 B 1.00
AutoMapper 157.01 ns 25.25 ns 1.384 ns 155.65 ns 156.94 ns 158.42 ns 2.08 0.06 2 0.0196 328 B 1.02
Mapster 88.89 ns 14.07 ns 0.771 ns 88.01 ns 89.19 ns 89.45 ns 1.18 0.03 1 0.0191 320 B 1.00
MapperlyMap 72.89 ns 12.44 ns 0.682 ns 72.34 ns 72.68 ns 73.66 ns 0.97 0.03 1 0.0191 320 B 1.00
AgileMapper 593.46 ns 41.17 ns 2.256 ns 590.86 ns 594.69 ns 594.84 ns 7.87 0.20 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 1.912 μs 1.0027 μs 0.0550 μs 1.863 μs 1.903 μs 1.971 μs 1.00 0.04 1 0.5283 0.0172 8.65 KB 1.00
EggMapper 1.840 μs 0.7015 μs 0.0385 μs 1.814 μs 1.821 μs 1.884 μs 0.96 0.03 1 0.5283 0.0172 8.65 KB 1.00
AutoMapper 2.485 μs 1.3098 μs 0.0718 μs 2.414 μs 2.484 μs 2.557 μs 1.30 0.05 2 0.6065 0.0191 9.95 KB 1.15
Mapster 1.870 μs 0.7057 μs 0.0387 μs 1.826 μs 1.890 μs 1.895 μs 0.98 0.03 1 0.5283 0.0172 8.65 KB 1.00
MapperlyMap 1.874 μs 0.8853 μs 0.0485 μs 1.818 μs 1.893 μs 1.909 μs 0.98 0.03 1 0.5283 0.0172 8.65 KB 1.00
AgileMapper 2.695 μs 1.0504 μs 0.0576 μs 2.661 μs 2.663 μs 2.762 μs 1.41 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 5.322 μs 1.2928 μs 0.0709 μs 5.254 μs 5.316 μs 5.395 μs 1.00 0.02 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 5.844 μs 1.3005 μs 0.0713 μs 5.770 μs 5.850 μs 5.912 μs 1.10 0.02 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 6.803 μs 0.9968 μs 0.0546 μs 6.741 μs 6.824 μs 6.844 μs 1.28 0.02 1 1.7548 0.1068 28.7 KB 1.05
Mapster 5.908 μs 2.0751 μs 0.1137 μs 5.837 μs 5.848 μs 6.039 μs 1.11 0.02 1 1.6708 0.0916 27.4 KB 1.00
MapperlyMap 5.618 μs 2.3189 μs 0.1271 μs 5.504 μs 5.595 μs 5.755 μs 1.06 0.02 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 5.472 μs 1.7412 μs 0.0954 μs 5.375 μs 5.475 μs 5.566 μs 1.03 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.46 μs 1.509 μs 0.083 μs 17.41 μs 17.41 μs 17.55 μs 1.00 0.01 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 18.19 μs 7.941 μs 0.435 μs 17.68 μs 18.41 μs 18.47 μs 1.04 0.02 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 21.80 μs 7.687 μs 0.421 μs 21.49 μs 21.64 μs 22.28 μs 1.25 0.02 1 5.7678 1.4343 94.34 KB 1.10
Mapster 18.36 μs 1.896 μs 0.104 μs 18.26 μs 18.35 μs 18.47 μs 1.05 0.01 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 19.86 μs 5.767 μs 0.316 μs 19.59 μs 19.78 μs 20.20 μs 1.14 0.02 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 21.20 μs 11.870 μs 0.651 μs 20.48 μs 21.38 μs 21.75 μs 1.21 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,349.001 μs 1,544.8481 μs 84.6783 μs 1,268.218 μs 1,341.687 μs 1,437.100 μs 1.003 0.08 3 5.8594 3.9063 95.98 KB 1.00
AutoMapperStartup 442.545 μs 409.6929 μs 22.4567 μs 424.385 μs 435.594 μs 467.655 μs 0.329 0.02 2 5.8594 - 104.11 KB 1.08
MapsterStartup 2.693 μs 0.9548 μs 0.0523 μs 2.632 μs 2.717 μs 2.728 μ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.327 ms 1.510 ms 0.0828 ms 1.267 ms 1.292 ms 1.421 ms 1.00 0.08 1 5.8594 3.9063 95.99 KB 1.00
AutoMapper 4.225 ms 9.960 ms 0.5459 ms 3.644 ms 4.303 ms 4.727 ms 3.19 0.39 2 15.6250 7.8125 310.23 KB 3.23
Mapster 4.379 ms 11.612 ms 0.6365 ms 3.669 ms 4.572 ms 4.897 ms 3.31 0.45 2 39.0625 15.6250 756.58 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 merged commit 1e1e144 into main May 22, 2026
4 checks passed
@cloud-hai-vo cloud-hai-vo deleted the chore/update-benchmarks-20260522-142411 branch May 22, 2026 14:34
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