Skip to content

chore: update benchmark results in README#123

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

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

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Automated benchmark update from CI run #178.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 2, 2026

📊 Benchmark Results

Generated: 2026-05-02 09:00 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.26 ns 5.485 ns 0.301 ns 15.00 ns 15.18 ns 15.59 ns 1.00 0.02 1 0.0032 80 B 1.00
EggMapper 25.49 ns 6.027 ns 0.330 ns 25.26 ns 25.33 ns 25.87 ns 1.67 0.03 2 0.0032 80 B 1.00
AutoMapper 69.34 ns 4.433 ns 0.243 ns 69.19 ns 69.22 ns 69.62 ns 4.55 0.08 3 0.0031 80 B 1.00
Mapster 28.82 ns 3.372 ns 0.185 ns 28.69 ns 28.74 ns 29.03 ns 1.89 0.03 2 0.0032 80 B 1.00
MapperlyMap 14.86 ns 6.419 ns 0.352 ns 14.57 ns 14.76 ns 15.25 ns 0.97 0.03 1 0.0032 80 B 1.00
AgileMapper 350.33 ns 11.077 ns 0.607 ns 349.67 ns 350.46 ns 350.87 ns 22.97 0.39 4 0.0134 344 B 4.30
EggMapperGenerator 16.50 ns 1.687 ns 0.092 ns 16.41 ns 16.50 ns 16.59 ns 1.08 0.02 1 0.0032 80 B 1.00
EggMapperClassMapper 16.22 ns 4.829 ns 0.265 ns 16.03 ns 16.10 ns 16.52 ns 1.06 0.02 1 0.0032 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 18.65 ns 1.075 ns 0.059 ns 18.59 ns 18.64 ns 18.71 ns 1.00 0.00 1 0.0032 80 B 1.00
EggMap 28.55 ns 11.727 ns 0.643 ns 27.94 ns 28.49 ns 29.22 ns 1.53 0.03 2 0.0032 80 B 1.00
AutoMapper 74.85 ns 5.567 ns 0.305 ns 74.51 ns 74.92 ns 75.11 ns 4.01 0.02 4 0.0031 80 B 1.00
Mapster 37.15 ns 3.810 ns 0.209 ns 37.00 ns 37.07 ns 37.39 ns 1.99 0.01 3 0.0032 80 B 1.00
MapperlyMap 23.83 ns 4.589 ns 0.252 ns 23.57 ns 23.84 ns 24.07 ns 1.28 0.01 2 0.0041 104 B 1.30
AgileMapper 349.16 ns 15.530 ns 0.851 ns 348.39 ns 349.01 ns 350.07 ns 18.73 0.06 5 0.0134 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.20 ns 11.78 ns 0.646 ns 54.56 ns 55.21 ns 55.85 ns 1.00 0.01 1 0.0107 272 B 1.00
EggMapper 66.44 ns 37.79 ns 2.071 ns 64.63 ns 65.99 ns 68.70 ns 1.20 0.03 1 0.0107 272 B 1.00
AutoMapper 106.42 ns 31.31 ns 1.716 ns 105.03 ns 105.90 ns 108.34 ns 1.93 0.03 2 0.0107 272 B 1.00
Mapster 70.63 ns 33.96 ns 1.862 ns 68.78 ns 70.62 ns 72.50 ns 1.28 0.03 1 0.0107 272 B 1.00
MapperlyMap 52.27 ns 10.52 ns 0.577 ns 51.72 ns 52.22 ns 52.87 ns 0.95 0.01 1 0.0108 272 B 1.00
AgileMapper 378.97 ns 38.31 ns 2.100 ns 377.46 ns 378.09 ns 381.37 ns 6.87 0.08 3 0.0167 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.22 ns 22.149 ns 1.214 ns 69.09 ns 70.06 ns 71.51 ns 1.00 0.02 1 0.0126 320 B 1.00
EggMapper 90.55 ns 21.752 ns 1.192 ns 89.36 ns 90.55 ns 91.75 ns 1.29 0.02 2 0.0126 320 B 1.00
AutoMapper 135.17 ns 8.767 ns 0.481 ns 134.73 ns 135.09 ns 135.68 ns 1.93 0.03 3 0.0129 328 B 1.02
Mapster 92.66 ns 24.613 ns 1.349 ns 91.31 ns 92.64 ns 94.01 ns 1.32 0.03 2 0.0126 320 B 1.00
MapperlyMap 69.85 ns 11.169 ns 0.612 ns 69.27 ns 69.79 ns 70.49 ns 0.99 0.02 1 0.0126 320 B 1.00
AgileMapper 420.84 ns 39.947 ns 2.190 ns 418.46 ns 421.28 ns 422.77 ns 5.99 0.09 4 0.0210 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.574 μs 0.1139 μs 0.0062 μs 1.567 μs 1.573 μs 1.580 μs 1.00 0.00 1 0.3529 0.0114 8.65 KB 1.00
EggMapper 1.756 μs 0.0542 μs 0.0030 μs 1.753 μs 1.756 μs 1.759 μs 1.12 0.00 1 0.3529 0.0114 8.65 KB 1.00
AutoMapper 2.347 μs 0.2894 μs 0.0159 μs 2.335 μs 2.340 μs 2.365 μs 1.49 0.01 1 0.4044 0.0114 9.95 KB 1.15
Mapster 1.631 μs 0.2195 μs 0.0120 μs 1.618 μs 1.633 μs 1.642 μs 1.04 0.01 1 0.3529 0.0114 8.65 KB 1.00
MapperlyMap 1.996 μs 0.5261 μs 0.0288 μs 1.968 μs 1.993 μs 2.026 μs 1.27 0.02 1 0.3510 0.0076 8.65 KB 1.00
AgileMapper 2.568 μs 0.7871 μs 0.0431 μs 2.524 μs 2.569 μs 2.610 μs 1.63 0.02 1 0.3624 0.0114 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.410 μs 1.0008 μs 0.0549 μs 5.360 μs 5.401 μs 5.469 μs 1.00 0.01 1 1.1139 0.0610 27.4 KB 1.00
EggMapper 5.781 μs 2.0004 μs 0.1096 μs 5.694 μs 5.744 μs 5.904 μs 1.07 0.02 1 1.1139 0.0610 27.4 KB 1.00
AutoMapper 6.755 μs 3.1989 μs 0.1753 μs 6.622 μs 6.690 μs 6.954 μs 1.25 0.03 1 1.1673 0.0687 28.7 KB 1.05
Mapster 6.004 μs 2.6147 μs 0.1433 μs 5.902 μs 5.942 μs 6.168 μs 1.11 0.02 1 1.1139 0.0610 27.4 KB 1.00
MapperlyMap 5.360 μs 1.3012 μs 0.0713 μs 5.277 μs 5.397 μs 5.405 μs 0.99 0.01 1 1.1139 0.0610 27.42 KB 1.00
AgileMapper 5.230 μs 0.1798 μs 0.0099 μs 5.223 μs 5.226 μs 5.242 μs 0.97 0.01 1 0.6790 0.0381 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.12 μs 5.577 μs 0.306 μs 16.92 μs 16.98 μs 17.48 μs 1.00 0.02 1 3.4790 0.8545 85.99 KB 1.00
EggMapper 17.27 μs 5.325 μs 0.292 μs 16.93 μs 17.40 μs 17.47 μs 1.01 0.02 1 3.4790 0.8545 85.99 KB 1.00
AutoMapper 21.54 μs 3.664 μs 0.201 μs 21.39 μs 21.47 μs 21.77 μs 1.26 0.02 2 3.8452 0.9460 94.34 KB 1.10
Mapster 16.25 μs 8.047 μs 0.441 μs 15.85 μs 16.17 μs 16.73 μs 0.95 0.03 1 3.4790 0.8545 85.99 KB 1.00
MapperlyMap 17.32 μs 10.792 μs 0.592 μs 16.63 μs 17.60 μs 17.71 μs 1.01 0.03 1 3.5095 0.8545 86.02 KB 1.00
AgileMapper 21.95 μs 6.874 μs 0.377 μs 21.64 μs 21.84 μs 22.37 μs 1.28 0.03 2 3.5095 0.8545 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,341.300 μs 1,488.644 μs 81.5976 μs 1,283.721 μs 1,305.501 μs 1,434.678 μs 1.002 0.07 3 1.9531 - 95.12 KB 1.00
AutoMapperStartup 396.219 μs 364.562 μs 19.9829 μs 380.462 μs 389.500 μs 418.696 μs 0.296 0.02 2 3.9063 - 104.22 KB 1.10
MapsterStartup 2.774 μs 1.095 μs 0.0600 μs 2.726 μs 2.755 μs 2.841 μs 0.002 0.00 1 0.4692 0.0114 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.388 ms 1.858 ms 0.1018 ms 1.325 ms 1.333 ms 1.506 ms 1.00 0.09 1 3.9063 1.9531 96.06 KB 1.00
AutoMapper 4.278 ms 8.600 ms 0.4714 ms 3.756 ms 4.406 ms 4.672 ms 3.09 0.35 2 7.8125 - 309.95 KB 3.23
Mapster 4.331 ms 7.485 ms 0.4103 ms 3.867 ms 4.476 ms 4.649 ms 3.13 0.32 2 23.4375 15.6250 757.71 KB 7.89

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