Faster cbor serialization with caching

This commit is contained in:
2025-07-03 18:13:02 +03:00
parent b27dfa0b0a
commit faf73e7798
10 changed files with 41 additions and 16 deletions
@@ -192,13 +192,10 @@ namespace mROA.Implementation
public async Task SingleReceive(CancellationToken token = default)
{
Console.WriteLine($"Receive start. Time: {profiler.ElapsedMilliseconds}ms");
var len = await ReadMessageLength();
Console.WriteLine($"Received len {len}. Time: {profiler.ElapsedMilliseconds}ms");
var localSpan = _buffer[..len];
await _ioStream.ReadExactlyAsync(localSpan, cancellationToken: token);
Console.WriteLine($"Received. Time: {profiler.ElapsedMilliseconds}ms");
profiler.Restart();
var message = _serializationToolkit.Deserialize<NetworkMessageHeader>(localSpan, _context);
MessageReceived(message);
@@ -218,10 +215,8 @@ namespace mROA.Implementation
var len = _serializationToolkit.Serialize(message, bodySpan.Span, _context);
var header = BitConverter.GetBytes((ushort)len);
header.CopyTo(_buffer);
Console.WriteLine($"Send start. Time: {profiler.ElapsedMilliseconds}ms");
var sendingSpan = _buffer[..(len + 2)];
await _ioStream.WriteAsync(sendingSpan, token);
Console.WriteLine($"Send. Time: {profiler.ElapsedMilliseconds}ms");
profiler.Restart();
}