Skip to content

docs: polish content, add using statements, concrete benchmarks#98

Merged
cloud-hai-vo merged 4 commits intomainfrom
feat/agents-and-github-pages
Mar 31, 2026
Merged

docs: polish content, add using statements, concrete benchmarks#98
cloud-hai-vo merged 4 commits intomainfrom
feat/agents-and-github-pages

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Improvements

Landing page

  • Categorized feature table (replaces bullet list) for faster scanning
  • Added "Migrate from AutoMapper" CTA button
  • Tighter hero text addressing the AutoMapper license change directly

Quick Start

  • Trimmed from ~300 to ~194 lines
  • Removed 5 redundant DI sections (now links to DI page)
  • Kept only the essential Minimal API example

vs AutoMapper

  • Concrete benchmark numbers with allocation columns
  • Reproducibility note: exact dotnet run command to verify claims
  • "Ready to Migrate?" section with reassurance callout

Across all pages

  • Added using EggMapper; to 15+ code blocks
  • Added callout boxes ({: .note }, {: .warning }) for important tips
  • Guide/Code Generation hub pages now list and link to all child pages

Net -91 lines — tighter without losing information.

🤖 Generated with Claude Code

cloud-hai-vo and others added 4 commits March 31, 2026 10:37
Expanded all 11 doc pages (+2,515 lines):
- Real-world code examples (EF Core entities, API controllers, Blazor)
- DI examples for 6 hosting models (MVC, minimal API, Blazor, gRPC, Worker)
- Benchmark comparison tables with representative timings
- "Why it's faster" technical explanation (inlined nested maps, etc.)
- Common pitfalls sections on every relevant page
- Full AutoMapper migration walkthrough with before/after code
- ProjectTo with complex queries and pagination
- Callout boxes for tips and warnings
- Table of contents on all longer pages
- Front matter with nav_order on all pages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add favicon and logo from existing icon.png (gold E on dark)
- Custom CSS: gold accent color (#d4a24c), polished buttons, tables
- Restructured navigation with parent groups:
  - Home / Quick Start / vs AutoMapper (top level)
  - Guide: Configuration, Profiles, DI, Advanced, Performance
  - Code Generation: Attribute Mapper, Class Mapper, Migration Guide
  - API Reference (top level)
- Renamed "Tier 2"/"Tier 3" to "Attribute Mapper"/"Class Mapper"
- Hidden redundant Getting-Started page (Quick Start covers it)
- Added jekyll-sitemap, jekyll-seo-tag, heading anchors, search

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Page titles in nav were already renamed, but the h1 headings and
comparison tables still said "Tier 2" / "Tier 3". Updated all
user-visible headings to use the clearer names.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…louts

- Landing page: categorized feature table, migration CTA, tighter hero
- Quick Start: trimmed from ~300 to ~194 lines, removed redundant DI
  sections (linked to DI page instead), added cross-references
- vs AutoMapper: concrete benchmark numbers with allocation columns,
  reproducibility note with exact benchmark command
- Added `using EggMapper;` to 15+ code blocks across all pages
- Added callout boxes for tips/warnings on Performance, Config pages
- Guide and Code Generation hub pages now link to all child pages
- Net -91 lines: tighter without losing information

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@cloud-hai-vo cloud-hai-vo enabled auto-merge (squash) March 31, 2026 03:50
@cloud-hai-vo cloud-hai-vo merged commit 06c5a39 into main Mar 31, 2026
5 checks passed
@cloud-hai-vo cloud-hai-vo deleted the feat/agents-and-github-pages branch March 31, 2026 03:51
@github-actions
Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Generated: 2026-03-31 03:57 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.31 ns 10.710 ns 0.587 ns 15.64 ns 16.56 ns 16.73 ns 1.00 0.04 1 0.0048 80 B 1.00
EggMapper 25.76 ns 4.155 ns 0.228 ns 25.51 ns 25.80 ns 25.96 ns 1.58 0.05 2 0.0048 80 B 1.00
AutoMapper 84.02 ns 16.193 ns 0.888 ns 83.01 ns 84.41 ns 84.66 ns 5.16 0.17 3 0.0048 80 B 1.00
Mapster 30.65 ns 9.286 ns 0.509 ns 30.26 ns 30.45 ns 31.22 ns 1.88 0.07 2 0.0048 80 B 1.00
MapperlyMap 16.75 ns 7.188 ns 0.394 ns 16.30 ns 16.91 ns 17.03 ns 1.03 0.04 1 0.0048 80 B 1.00
AgileMapper 494.41 ns 68.466 ns 3.753 ns 491.13 ns 493.59 ns 498.50 ns 30.34 0.98 4 0.0200 344 B 4.30
EggMapperGenerator 17.39 ns 2.193 ns 0.120 ns 17.29 ns 17.36 ns 17.53 ns 1.07 0.03 1 0.0048 80 B 1.00
EggMapperClassMapper 15.50 ns 9.259 ns 0.507 ns 15.04 ns 15.41 ns 16.04 ns 0.95 0.04 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 18.53 ns 1.703 ns 0.093 ns 18.45 ns 18.50 ns 18.63 ns 1.00 0.01 1 0.0048 80 B 1.00
EggMap 31.88 ns 31.666 ns 1.736 ns 29.91 ns 32.60 ns 33.15 ns 1.72 0.08 3 0.0048 80 B 1.00
AutoMapper 96.80 ns 3.271 ns 0.179 ns 96.60 ns 96.85 ns 96.95 ns 5.23 0.02 4 0.0048 80 B 1.00
Mapster 38.20 ns 2.907 ns 0.159 ns 38.02 ns 38.27 ns 38.31 ns 2.06 0.01 3 0.0048 80 B 1.00
MapperlyMap 25.79 ns 11.435 ns 0.627 ns 25.11 ns 25.92 ns 26.35 ns 1.39 0.03 2 0.0062 104 B 1.30
AgileMapper 556.01 ns 69.587 ns 3.814 ns 551.66 ns 557.56 ns 558.81 ns 30.01 0.22 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 61.02 ns 4.814 ns 0.264 ns 60.74 ns 61.08 ns 61.26 ns 1.00 0.01 1 0.0162 272 B 1.00
EggMapper 71.74 ns 58.571 ns 3.210 ns 69.29 ns 70.57 ns 75.38 ns 1.18 0.05 1 0.0162 272 B 1.00
AutoMapper 127.65 ns 9.202 ns 0.504 ns 127.07 ns 127.92 ns 127.96 ns 2.09 0.01 2 0.0162 272 B 1.00
Mapster 74.83 ns 24.679 ns 1.353 ns 73.41 ns 74.97 ns 76.11 ns 1.23 0.02 1 0.0162 272 B 1.00
MapperlyMap 58.78 ns 21.977 ns 1.205 ns 57.56 ns 58.81 ns 59.96 ns 0.96 0.02 1 0.0162 272 B 1.00
AgileMapper 534.73 ns 33.934 ns 1.860 ns 532.95 ns 534.58 ns 536.66 ns 8.76 0.04 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 71.82 ns 16.840 ns 0.923 ns 71.20 ns 71.38 ns 72.88 ns 1.00 0.02 1 0.0191 320 B 1.00
EggMapper 99.23 ns 25.927 ns 1.421 ns 97.79 ns 99.26 ns 100.63 ns 1.38 0.02 2 0.0191 320 B 1.00
AutoMapper 155.77 ns 14.816 ns 0.812 ns 154.84 ns 156.19 ns 156.29 ns 2.17 0.03 3 0.0196 328 B 1.02
Mapster 91.54 ns 50.566 ns 2.772 ns 88.98 ns 91.14 ns 94.48 ns 1.27 0.04 2 0.0191 320 B 1.00
MapperlyMap 70.54 ns 6.795 ns 0.372 ns 70.25 ns 70.41 ns 70.96 ns 0.98 0.01 1 0.0191 320 B 1.00
AgileMapper 585.09 ns 47.050 ns 2.579 ns 582.43 ns 585.26 ns 587.58 ns 8.15 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.762 μs 0.2812 μs 0.0154 μs 1.744 μs 1.767 μs 1.774 μs 1.00 0.01 1 0.5283 0.0172 8.65 KB 1.00
EggMapper 1.744 μs 0.2963 μs 0.0162 μs 1.734 μs 1.734 μs 1.762 μs 0.99 0.01 1 0.5283 0.0172 8.65 KB 1.00
AutoMapper 2.602 μs 1.2384 μs 0.0679 μs 2.544 μs 2.585 μs 2.677 μs 1.48 0.04 2 0.6065 0.0191 9.95 KB 1.15
Mapster 1.932 μs 0.4124 μs 0.0226 μs 1.906 μs 1.939 μs 1.949 μs 1.10 0.01 1 0.5264 0.0153 8.65 KB 1.00
MapperlyMap 1.969 μs 0.7017 μs 0.0385 μs 1.935 μs 1.961 μs 2.011 μs 1.12 0.02 1 0.5264 0.0153 8.65 KB 1.00
AgileMapper 2.565 μs 1.3882 μs 0.0761 μs 2.482 μs 2.582 μs 2.632 μs 1.46 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.503 μs 1.9894 μs 0.1090 μs 5.389 μs 5.514 μs 5.606 μs 1.00 0.02 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 5.729 μs 0.5481 μs 0.0300 μs 5.695 μs 5.743 μs 5.750 μs 1.04 0.02 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 7.329 μs 1.2905 μs 0.0707 μs 7.249 μs 7.353 μs 7.384 μs 1.33 0.03 1 1.7548 0.1068 28.7 KB 1.05
Mapster 6.427 μs 4.6276 μs 0.2537 μs 6.136 μs 6.538 μs 6.606 μs 1.17 0.04 1 1.6708 0.0916 27.4 KB 1.00
MapperlyMap 5.916 μs 2.2595 μs 0.1238 μs 5.773 μs 5.985 μs 5.990 μs 1.08 0.03 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 5.611 μs 1.4947 μs 0.0819 μs 5.519 μs 5.636 μs 5.677 μs 1.02 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 18.10 μs 13.025 μs 0.714 μs 17.28 μs 18.42 μs 18.58 μs 1.00 0.05 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 17.65 μs 16.820 μs 0.922 μs 16.87 μs 17.41 μs 18.66 μs 0.98 0.06 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 21.46 μs 5.099 μs 0.279 μs 21.14 μs 21.58 μs 21.67 μs 1.19 0.04 1 5.7678 1.4343 94.34 KB 1.10
Mapster 17.68 μs 11.875 μs 0.651 μs 17.22 μs 17.40 μs 18.43 μs 0.98 0.05 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 20.57 μs 1.871 μs 0.103 μs 20.49 μs 20.54 μs 20.69 μs 1.14 0.04 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 20.96 μs 17.049 μs 0.935 μs 20.33 μs 20.51 μs 22.03 μs 1.16 0.06 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,376.601 μs 1,075.041 μs 58.9266 μs 1,341.678 μs 1,343.489 μs 1,444.635 μs 1.001 0.05 3 5.8594 1.9531 95.79 KB 1.00
AutoMapperStartup 413.287 μs 512.231 μs 28.0771 μs 381.917 μs 421.881 μs 436.062 μs 0.301 0.02 2 5.8594 - 104.14 KB 1.09
MapsterStartup 2.499 μs 1.804 μs 0.0989 μs 2.442 μs 2.442 μs 2.614 μ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.332 ms 1.235 ms 0.0677 ms 1.284 ms 1.302 ms 1.410 ms 1.00 0.06 1 5.8594 3.9063 96.23 KB 1.00
AutoMapper 4.130 ms 12.390 ms 0.6791 ms 3.563 ms 3.944 ms 4.882 ms 3.11 0.46 2 15.6250 7.8125 310.16 KB 3.22
Mapster 4.477 ms 9.910 ms 0.5432 ms 3.909 ms 4.530 ms 4.992 ms 3.37 0.38 2 39.0625 15.6250 762.69 KB 7.93

📝 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