31 lines
1.4 KiB
Markdown
31 lines
1.4 KiB
Markdown
# AyCode.Core.Serializers.Console
|
|
|
|
Standalone benchmark console application for comparing serializer performance. Targets .NET 9. Measures serialize/deserialize speed, output size, and compression across multiple serializers and data shapes.
|
|
|
|
## Compared Serializers
|
|
|
|
- **AcBinary** — Multiple configurations: Default, NoRef, FastMode, NoIntern, with/without source generation
|
|
- **MessagePack**
|
|
- **MemoryPack**
|
|
|
|
(System.Text.Json and Newtonsoft.Json comparisons exist but are currently commented out.)
|
|
|
|
## Key Files
|
|
|
|
- **`Program.cs`** — Benchmark runner. Modes: `all` (default), `quick` (fewer iterations), `serialize`, `deserialize`, `profiler` (memory profiler warmup). Outputs results to `Test_Benchmark_Results/Benchmark/`. Iterations: 5000 warmup + 1000 test (Release), 0+1 (Debug).
|
|
- **`BenchmarkTestDataProvider.cs`** — Test data factory producing 5 data shapes:
|
|
- Small (2x2x2x2), Medium (3x3x3x4), Large (5x5x5x10)
|
|
- Repeated Strings (10 items, string deduplication testing)
|
|
- Deep Nested (2x4x4x8, depth stress test)
|
|
- Uses `TestOrder` model from `AyCode.Core.Tests` with configurable IId reference percentages.
|
|
|
|
## Dependencies
|
|
|
|
| Dependency | Purpose |
|
|
|---|---|
|
|
| `AyCode.Core` | Core library with AcBinary serializer |
|
|
| `AyCode.Core.Tests` | Test models (`TestOrder`, `TestDataFactory`, etc.) |
|
|
| `MemoryPack` | Competitor benchmark |
|
|
| `MessagePack` | Competitor benchmark |
|
|
| `Newtonsoft.Json` | Competitor benchmark |
|