AyCode.Core/AyCode.Benchmark
Loretta 32018e906a Refactor SignalR: separate metadata and payload transport
Major protocol update: OnReceiveMessage now takes metadata (SignalReceiveParams) and payload (byte[]) as separate hub arguments, not a single envelope. Metadata is AcBinary-serialized; payload uses protocol fast-path. Updated all client/server code, interfaces, and docs. Added ISignalParams and SignalReceiveParams types. Improved AcBinaryHubProtocol diagnostics and made byte[] fast-path more robust. This enables clearer, more debuggable, and future-proof SignalR binary messaging.
2026-04-05 09:30:54 +02:00
..
AyCode.Benchmark.csproj Update dependencies and expand README documentation 2026-03-20 16:42:51 +01:00
JitDisassemblyBenchmark.cs Optimize serializer with write plan for interning & refs 2026-02-15 17:28:06 +01:00
Program.cs Add JIT disassembly benchmark and improve string interning 2026-02-14 19:53:23 +01:00
README.md Document AcBinary wire format, sync docs, update conventions 2026-03-29 09:11:57 +02:00
RefForeachBenchmark.cs Refactor serialization infra, add perf benchmarks 2025-12-30 19:29:39 +01:00
SerializationBenchmarks.cs Refactor string interning to use enum and attribute 2026-01-26 11:04:25 +01:00
SignalRCommunicationBenchmarks.cs Refactor: Add high-perf JSON serializer & merge support 2025-12-14 19:34:49 +01:00
SignalRRoundTripBenchmarks.cs Refactor SignalR: separate metadata and payload transport 2026-04-05 09:30:54 +02:00
SourceGeneratorBenchmarks.cs Refactor serializer options, string fast paths & analysis 2026-01-25 16:40:40 +01:00
TaskHelperBenchmarks.cs Rename BenchmarkSuite1 to AyCode.Benchmark project 2025-12-13 10:11:39 +01:00
ValueTypePassingBenchmark.cs Refactor serialization infra, add perf benchmarks 2025-12-30 19:29:39 +01:00

README.md

AyCode.Benchmark

BenchmarkDotNet-based performance benchmarking console app. Compares AcBinary serializer against MessagePack, BSON, and JSON across various scenarios.

Key Files

  • Program.cs — CLI entry point with --quick, --test, --minimal, --simple, --complex, --msgpack, --sizes, --jitasm modes. Collects results to Test_Benchmark_Results/ at solution root.
  • SerializationBenchmarks.cs — Primary suite: MinimalBenchmark, SimpleBinaryBenchmark, ComplexBinaryBenchmark, MessagePackComparisonBenchmark, AcBinaryVsMessagePackFullBenchmark, SizeComparisonBenchmark, LargeScaleBenchmark (~25K objects), AcJsonVsSystemTextJsonBenchmark.
  • SourceGeneratorBenchmarks.cs — Source-generated vs runtime reflection serializers. Includes PureContractlessBenchmark, SourceGeneratorVsRuntimeBenchmark, RepeatedStringBenchmark (string interning).
  • SignalRCommunicationBenchmarks.cs — Full-stack SignalR message performance: client creation → MessagePack serialization → server deserialization → response → round-trip.
  • SignalRRoundTripBenchmarks.cs — Real SignalR infrastructure benchmarks: primitives, complex objects, collections, mixed parameters.
  • JitDisassemblyBenchmark.cs — JIT analysis: generates .asm files to verify inlining decisions on serialize/deserialize hot paths.
  • TaskHelperBenchmarks.cs — Task/timing utilities: WaitToAsync, ThreadPool (custom vs Task.Run), timing methods (UtcNow.Ticks vs TickCount64).
  • RefForeachBenchmark.cs — Collection iteration patterns: array vs list, foreach vs index, ref readonly vs by-value for large structs.
  • ValueTypePassingBenchmark.cs — Copy-by-value vs in parameter for 16-byte types (Decimal, DateTimeOffset, Guid).

Dependencies

Dependency Purpose
BenchmarkDotNet Benchmarking framework
MessagePack Serialization comparison target
MongoDB.Bson BSON comparison target