continuity/Benchmarks/BinaryConversionBenchmarks.cs
Timothy Schenk dc6d8316e9
All checks were successful
Build, Package and Push Images / preprocess (push) Successful in 1s
Build, Package and Push Images / build (push) Successful in 26s
Build, Package and Push Images / sbom-scan (push) Successful in 39s
Build, Package and Push Images / sonarqube (push) Successful in 1m21s
Build, Package and Push Images / container-build (push) Successful in 1m30s
Build, Package and Push Images / container-sbom-scan (push) Successful in 37s
chore: ci jobs expanded & .net 8 support
ci: branch name sanitization for docker

ci: another attempt

ci: forgot actor

chore: remove nuke remnants

chore(deps): update dependency dotnet-sdk to v7.0.403

Signed-off-by: noreply@rainote.dev

refactor: shared data into library

refactor: rewrite for packethandler/id map

chore: logging

chore: Sonar Warnings

chore: upgrade to .net8 image

chore: fetch all required information for characters

chore: upgrade to .net 8

ci: install .net 7.0 alongside 8.0 for sbom

fix: incorrect job

ci: let's try arm64 again

ci: adjust project for .net 8 support

chore: adjustments to composefile

chore: analyzer setup

chore: analyzer and project settings updated
2023-11-08 09:38:49 +01:00

43 lines
1.2 KiB
C#

namespace Benchmarks;
using System.Security.Cryptography;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Order;
[SimpleJob(RuntimeMoniker.Net80)]
[SimpleJob(RuntimeMoniker.Net70)]
[SimpleJob(RuntimeMoniker.Net60)]
[Orderer(SummaryOrderPolicy.FastestToSlowest)]
[RankColumn]
[MemoryDiagnoser]
[ThreadingDiagnoser]
public class BinaryConversionBenchmarks
{
private byte[] _data = null!;
private int _offset;
[GlobalSetup]
public void Setup()
{
this._data = RandomNumberGenerator.GetBytes(4000);
this._offset = RandomNumberGenerator.GetInt32(0, 3500);
}
[Benchmark]
public short BitConverterTest() => BitConverter.ToInt16(this._data, this._offset);
[Benchmark]
public short BinaryReader()
{
using var ms = new MemoryStream(this._data);
using var reader = new BinaryReader(ms);
reader.BaseStream.Position = this._offset;
return reader.ReadInt16();
}
[Benchmark]
public short BinaryPrimitives() =>
System.Buffers.Binary.BinaryPrimitives.ReadInt16LittleEndian(
new ArraySegment<byte>(this._data, this._offset, sizeof(short)));
}