Improve AcBinary/MemoryPack bench parity & reporting - Add geometric/median/arith mean deltas to overall bench output for robust performance comparison. - Align MemoryPack string encoding with wire mode for fair apples-to-apples results. - Refactor summary/log/LLM output to use new aggregation methods. - Add temporary SGen feature gates for A/B testing property filter and polymorph overhead (set false for bench). - Switch FastWire string encoding to fixed 4-byte LE char length (matches MemPack). - Update SIMD/transcoder docs: document switch to BCL Utf8 APIs, which outperform custom SIMD. - Minor code cleanups and improved comments. - No wire-format changes; all updates are perf/bench/codegen only. |
||
|---|---|---|
| .. | ||
| AyCode.Core.Serializers.Console.csproj | ||
| Program.cs | ||
| README.md | ||
README.md
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 toTest_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
TestOrdermodel fromAyCode.Core.Testswith 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 |