38 lines
875 B
C#
38 lines
875 B
C#
using BenchmarkDotNet.Attributes;
|
|
using System;
|
|
|
|
public class FasterFromBase64Benchmarks
|
|
{
|
|
private byte[] bytes;
|
|
private char[] chars;
|
|
|
|
[Params(100, 1000, 10000)]
|
|
public int N { get; set; }
|
|
|
|
[GlobalSetup]
|
|
public void GlobalSetup()
|
|
{
|
|
var originalBytes = new byte[N];
|
|
var random = new Random(1);
|
|
random.NextBytes(originalBytes);
|
|
var resultSize = (1 + (N - 1) / 3) * 4;
|
|
chars = new char[resultSize];
|
|
System.Convert.TryToBase64Chars(originalBytes, chars, out var _);
|
|
bytes = new byte[N];
|
|
}
|
|
|
|
[Benchmark]
|
|
public byte Old()
|
|
{
|
|
System.Convert.TryFromBase64Chars(chars, bytes, out var _);
|
|
return bytes[^1];
|
|
}
|
|
|
|
[Benchmark]
|
|
public byte New()
|
|
{
|
|
FasterBase64.Convert.TryFromBase64Chars(chars, bytes, out var _);
|
|
return bytes[^1];
|
|
}
|
|
}
|