using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Jobs; namespace HPPH.Benchmark; [SimpleJob(RuntimeMoniker.Net80)] [HtmlExporter] [MemoryDiagnoser] public class ConvertBenchmarks { #region Properties & Fields private readonly List _colors3bpp; private readonly List _colors4bpp; #endregion #region Constructors public ConvertBenchmarks() { _colors3bpp = BenchmarkHelper.GetSampleData(); _colors4bpp = BenchmarkHelper.GetSampleData(); } #endregion #region Methods [Benchmark] public ColorBGR[] RGBToBGR() { ColorBGR[] result = []; foreach (ColorRGB[] color in _colors3bpp) result = new ReadOnlySpan(color).Convert(); return result; } [Benchmark] public ColorBGRA[] RGBToBGRA() { ColorBGRA[] result = []; foreach (ColorRGB[] color in _colors3bpp) result = new ReadOnlySpan(color).Convert(); return result; } [Benchmark] public ColorABGR[] RGBAToABGR() { ColorABGR[] result = []; foreach (ColorRGBA[] color in _colors4bpp) result = new ReadOnlySpan(color).Convert(); return result; } [Benchmark] public ColorBGR[] ARGBToBGR() { ColorBGR[] result = []; foreach (ColorRGBA[] color in _colors4bpp) result = new ReadOnlySpan(color).Convert(); return result; } [Benchmark] public void RGBToBGR_InPlace() { foreach (ColorRGB[] color in _colors3bpp) new Span(color).ConvertInPlace(); } [Benchmark] public void RGBAToABGR_InPlace() { foreach (ColorRGBA[] color in _colors4bpp) new Span(color).ConvertInPlace(); } #endregion }