docs: dark theme, grouped nav, hide diagnostics, enriched content#96
Merged
cloud-hai-vo merged 4 commits intomainfrom Mar 31, 2026
Merged
docs: dark theme, grouped nav, hide diagnostics, enriched content#96cloud-hai-vo merged 4 commits intomainfrom
cloud-hai-vo merged 4 commits intomainfrom
Conversation
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>
0eba2bd to
6410a13
Compare
Contributor
📊 Benchmark Results
🔵 Flat Mapping — 10-property object
🟡 Flattening — 2 nested objects → 8 flat properties
🟣 Deep Mapping — 2 nested address objects
🟢 Complex Mapping — nested object + collection
🟠 Collection — 100-item
|
| 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) addsMin,Median, andMaxcolumns. - 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 '*'
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
🤖 Generated with Claude Code