Files

93 lines
2.4 KiB
C#

using System.Formats.Cbor;
using BenchmarkDotNet.Attributes;
namespace mROA.Benchmark;
[MemoryDiagnoser]
public class CborTest
{
private CborWriter _writer;
private CborReader _reader;
private Memory<byte> FlatEncoded;
private Memory<byte> ArrayEncoded;
public CborTest()
{
_writer = new CborWriter(initialCapacity:512);
_writer.WriteStartArray(2);
_writer.WriteByteString([1, 2, 3, 4, 5, 6, 7, 8]);
_writer.WriteStartArray(2);
_writer.WriteInt32(12);
_writer.WriteTextString("tralala");
_writer.WriteEndArray();
_writer.WriteEndArray();
ArrayEncoded = _writer.Encode();
_writer.Reset();
_writer.WriteStartArray(3);
_writer.WriteByteString([1, 2, 3, 4, 5, 6, 7, 8]);
_writer.WriteInt32(12);
_writer.WriteTextString("tralala");
_writer.WriteEndArray();
FlatEncoded = _writer.Encode();
}
[Benchmark]
public int FlatWrite()
{
_writer.Reset();
_writer.WriteStartArray(3);
_writer.WriteByteString([1, 2, 3, 4, 5, 6, 7, 8]);
_writer.WriteInt32(12);
_writer.WriteTextString("tralala");
_writer.WriteEndArray();
var len = _writer.Encode(FlatEncoded.Span);
return len;
}
[Benchmark]
public int ArrayWrite()
{
_writer.Reset();
_writer.WriteStartArray(2);
_writer.WriteByteString([1, 2, 3, 4, 5, 6, 7, 8]);
_writer.WriteStartArray(2);
_writer.WriteInt32(12);
_writer.WriteTextString("tralala");
_writer.WriteEndArray();
_writer.WriteEndArray();
var len = _writer.Encode(ArrayEncoded.Span);
return len;
}
[Benchmark]
public int FlatRead()
{
var reader = new CborReader(FlatEncoded);
reader.ReadStartArray();
var arr = reader.ReadByteString();
var i = reader.ReadInt32();
var text = reader.ReadTextString();
reader.ReadEndArray();
return arr.Length;
}
[Benchmark]
public int ArrayRead()
{
var reader = new CborReader(ArrayEncoded);
reader.ReadStartArray();
var arr = reader.ReadByteString();
reader.ReadStartArray();
var i = reader.ReadInt32();
var text = reader.ReadTextString();
reader.ReadEndArray();
reader.ReadEndArray();
return arr.Length;
}
}