AyCode.Core/AyCode.Benchmark
Loretta d147398698 Switch SignalR payloads to ArrayPool-backed SignalData
Major protocol refactor: all byte[] payloads in SignalR hub/client interfaces, plumbing, and DTOs are now wrapped in SignalData, a disposable, ArrayPool-backed type with Span access. Introduces AyCodeBinaryHubProtocol (derived from AcBinaryHubProtocol) to rent pooled buffers for SignalData on receive. All message signatures, diagnostics, and serialization logic updated. Documentation and tests revised to reflect SignalData usage. Enables zero-copy, low-GC, high-performance binary messaging for large payloads.
2026-04-06 11:17:02 +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 Switch SignalR payloads to ArrayPool-backed SignalData 2026-04-06 11:17:02 +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