# 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`. 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 |
