docs: polish content, add using statements, concrete benchmarks#98
Merged
cloud-hai-vo merged 4 commits intomainfrom Mar 31, 2026
Merged
docs: polish content, add using statements, concrete benchmarks#98cloud-hai-vo merged 4 commits intomainfrom
cloud-hai-vo merged 4 commits intomainfrom
Conversation
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>
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 | 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) 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.
Improvements
Landing page
Quick Start
vs AutoMapper
dotnet runcommand to verify claimsAcross all pages
using EggMapper;to 15+ code blocksNet -91 lines — tighter without losing information.
🤖 Generated with Claude Code