Skip to content

docs: dark theme, grouped nav, hide diagnostics, enriched content#96

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

docs: dark theme, grouped nav, hide diagnostics, enriched content#96
cloud-hai-vo merged 4 commits intomainfrom
feat/agents-and-github-pages

Conversation

@cloud-hai-vo
Copy link
Copy Markdown
Contributor

Changes

  • Dark gold theme with favicon and logo
  • Grouped sidebar navigation (Guide, Code Generation parent sections)
  • Hidden diagnostic pages (EGG1002-EGG3003) from sidebar nav
  • Renamed Tier 2/3 to Attribute Mapper / Class Mapper
  • Enriched all doc pages with real-world examples
  • SEO: sitemap, robots.txt, seo-tag, comparison page
  • Custom CSS with gold accent matching logo

🤖 Generated with Claude Code

cloud-hai-vo and others added 4 commits March 31, 2026 10:22
Local machine paths must never be committed to shared config files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
- Add nav_exclude: true to all 7 diagnostic rule pages (EGG1002-EGG3003)
- Diagnostic pages are still accessible via direct URL but don't clutter nav

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@cloud-hai-vo cloud-hai-vo force-pushed the feat/agents-and-github-pages branch from 0eba2bd to 6410a13 Compare March 31, 2026 03:23
@cloud-hai-vo cloud-hai-vo enabled auto-merge (squash) March 31, 2026 03:23
@cloud-hai-vo cloud-hai-vo merged commit 52fbbcc 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:23
@github-actions
Copy link
Copy Markdown
Contributor

📊 Benchmark Results

Generated: 2026-03-31 03:29 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.00 ns 1.906 ns 0.104 ns 14.89 ns 15.01 ns 15.10 ns 1.00 0.01 1 0.0048 80 B 1.00
EggMapper 25.61 ns 4.508 ns 0.247 ns 25.39 ns 25.57 ns 25.87 ns 1.71 0.02 2 0.0048 80 B 1.00
AutoMapper 80.78 ns 4.001 ns 0.219 ns 80.55 ns 80.79 ns 80.99 ns 5.39 0.03 3 0.0048 80 B 1.00
Mapster 27.66 ns 3.310 ns 0.181 ns 27.47 ns 27.67 ns 27.83 ns 1.84 0.02 2 0.0048 80 B 1.00
MapperlyMap 14.77 ns 3.436 ns 0.188 ns 14.65 ns 14.67 ns 14.98 ns 0.98 0.01 1 0.0048 80 B 1.00
AgileMapper 497.56 ns 15.528 ns 0.851 ns 496.66 ns 497.65 ns 498.36 ns 33.17 0.21 4 0.0200 344 B 4.30
EggMapperGenerator 15.15 ns 5.171 ns 0.283 ns 14.94 ns 15.05 ns 15.47 ns 1.01 0.02 1 0.0048 80 B 1.00
EggMapperClassMapper 15.08 ns 2.802 ns 0.154 ns 14.99 ns 14.99 ns 15.26 ns 1.01 0.01 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.91 ns 2.884 ns 0.158 ns 18.76 ns 18.91 ns 19.07 ns 1.00 0.01 1 0.0048 80 B 1.00
EggMap 29.99 ns 5.729 ns 0.314 ns 29.65 ns 30.06 ns 30.27 ns 1.59 0.02 3 0.0048 80 B 1.00
AutoMapper 95.77 ns 2.911 ns 0.160 ns 95.60 ns 95.81 ns 95.91 ns 5.06 0.04 4 0.0048 80 B 1.00
Mapster 35.94 ns 3.629 ns 0.199 ns 35.72 ns 35.99 ns 36.11 ns 1.90 0.02 3 0.0048 80 B 1.00
MapperlyMap 23.22 ns 6.148 ns 0.337 ns 22.96 ns 23.09 ns 23.60 ns 1.23 0.02 2 0.0062 104 B 1.30
AgileMapper 521.50 ns 39.250 ns 2.151 ns 519.92 ns 520.64 ns 523.95 ns 27.57 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 53.28 ns 10.195 ns 0.559 ns 52.71 ns 53.29 ns 53.83 ns 1.00 0.01 1 0.0162 272 B 1.00
EggMapper 64.30 ns 9.361 ns 0.513 ns 63.94 ns 64.06 ns 64.88 ns 1.21 0.01 2 0.0162 272 B 1.00
AutoMapper 121.73 ns 9.531 ns 0.522 ns 121.18 ns 121.80 ns 122.22 ns 2.29 0.02 3 0.0162 272 B 1.00
Mapster 67.47 ns 7.011 ns 0.384 ns 67.14 ns 67.37 ns 67.89 ns 1.27 0.01 2 0.0162 272 B 1.00
MapperlyMap 49.59 ns 3.186 ns 0.175 ns 49.39 ns 49.67 ns 49.71 ns 0.93 0.01 1 0.0162 272 B 1.00
AgileMapper 510.64 ns 33.477 ns 1.835 ns 508.93 ns 510.42 ns 512.58 ns 9.59 0.09 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.68 ns 16.095 ns 0.882 ns 74.66 ns 76.16 ns 76.21 ns 1.00 0.01 1 0.0191 320 B 1.00
EggMapper 98.69 ns 12.917 ns 0.708 ns 97.87 ns 99.03 ns 99.15 ns 1.30 0.02 2 0.0191 320 B 1.00
AutoMapper 160.79 ns 4.904 ns 0.269 ns 160.49 ns 160.88 ns 161.00 ns 2.12 0.02 3 0.0196 328 B 1.02
Mapster 93.56 ns 14.874 ns 0.815 ns 92.91 ns 93.31 ns 94.48 ns 1.24 0.02 2 0.0191 320 B 1.00
MapperlyMap 70.88 ns 13.002 ns 0.713 ns 70.06 ns 71.22 ns 71.36 ns 0.94 0.01 1 0.0191 320 B 1.00
AgileMapper 584.66 ns 30.213 ns 1.656 ns 582.82 ns 585.14 ns 586.03 ns 7.73 0.08 4 0.0315 528 B 1.65

🟠 Collection — 100-item List<T>

Method Mean Error StdDev Min Median Max Ratio Rank Gen0 Gen1 Allocated Alloc Ratio
Manual 7.815 μs 0.2243 μs 0.0123 μs 7.805 μs 7.813 μs 7.829 μs 1.00 3 0.5188 0.0153 8.65 KB 1.00
EggMapper 1.972 μs 0.7779 μs 0.0426 μs 1.923 μs 1.990 μs 2.002 μs 0.25 1 0.5283 0.0172 8.65 KB 1.00
AutoMapper 2.495 μs 0.1709 μs 0.0094 μs 2.485 μs 2.497 μs 2.504 μs 0.32 2 0.6065 0.0191 9.95 KB 1.15
Mapster 1.921 μs 0.3539 μs 0.0194 μs 1.898 μs 1.929 μs 1.934 μs 0.25 1 0.5283 0.0172 8.65 KB 1.00
MapperlyMap 1.966 μs 0.2032 μs 0.0111 μs 1.955 μs 1.968 μs 1.977 μs 0.25 1 0.5264 0.0153 8.65 KB 1.00
AgileMapper 2.690 μs 0.6853 μs 0.0376 μs 2.646 μs 2.707 μs 2.715 μs 0.34 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.443 μs 3.0091 μs 0.1649 μs 5.268 μs 5.464 μs 5.596 μs 1.00 0.04 1 1.6708 0.0916 27.4 KB 1.00
EggMapper 5.807 μs 0.9643 μs 0.0529 μs 5.774 μs 5.779 μs 5.868 μs 1.07 0.03 1 1.6708 0.0916 27.4 KB 1.00
AutoMapper 6.739 μs 3.8251 μs 0.2097 μs 6.536 μs 6.726 μs 6.955 μs 1.24 0.05 1 1.7548 0.1068 28.7 KB 1.05
Mapster 5.923 μs 2.3775 μs 0.1303 μs 5.784 μs 5.941 μs 6.043 μs 1.09 0.04 1 1.6708 0.0916 27.4 KB 1.00
MapperlyMap 5.360 μs 2.2852 μs 0.1253 μs 5.283 μs 5.293 μs 5.504 μs 0.99 0.03 1 1.6785 0.0992 27.42 KB 1.00
AgileMapper 5.364 μs 0.7989 μs 0.0438 μs 5.336 μs 5.341 μs 5.414 μs 0.99 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 17.64 μs 8.422 μs 0.462 μs 17.12 μs 17.81 μs 18.00 μs 1.00 0.03 1 5.2490 1.3123 85.99 KB 1.00
EggMapper 17.15 μs 0.271 μs 0.015 μs 17.14 μs 17.15 μs 17.17 μs 0.97 0.02 1 5.2490 1.3123 85.99 KB 1.00
AutoMapper 21.37 μs 4.498 μs 0.247 μs 21.08 μs 21.48 μs 21.54 μs 1.21 0.03 1 5.7678 1.4343 94.34 KB 1.10
Mapster 17.34 μs 3.993 μs 0.219 μs 17.14 μs 17.31 μs 17.58 μs 0.98 0.02 1 5.2490 1.3123 85.99 KB 1.00
MapperlyMap 18.40 μs 2.485 μs 0.136 μs 18.24 μs 18.46 μs 18.49 μs 1.04 0.02 1 5.2490 1.2817 86.02 KB 1.00
AgileMapper 20.14 μs 1.173 μs 0.064 μs 20.09 μs 20.12 μs 20.21 μs 1.14 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,347.808 μs 1,160.6052 μs 63.6167 μs 1,299.735 μs 1,323.742 μs 1,419.946 μs 1.001 0.06 3 5.8594 - 95.66 KB 1.00
AutoMapperStartup 424.298 μs 718.1364 μs 39.3635 μs 382.073 μs 430.841 μs 459.981 μs 0.315 0.03 2 5.8594 - 104.12 KB 1.09
MapsterStartup 2.470 μs 0.3243 μs 0.0178 μs 2.450 μs 2.474 μs 2.485 μ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.380 ms 1.536 ms 0.0842 ms 1.283 ms 1.425 ms 1.432 ms 1.00 0.08 1 5.8594 3.9063 96.13 KB 1.00
AutoMapper 4.142 ms 10.210 ms 0.5596 ms 3.598 ms 4.113 ms 4.716 ms 3.01 0.39 2 15.6250 7.8125 310.33 KB 3.23
Mapster 4.643 ms 7.765 ms 0.4256 ms 4.161 ms 4.800 ms 4.968 ms 3.37 0.33 2 39.0625 15.6250 758.2 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 '*'

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