using System.Numerics; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Jobs; namespace SoulstormReplayReader.Benchmarks; [SimpleJob(RuntimeMoniker.Net80)] [MemoryDiagnoser] public class TestBenchy { [Params(0xff3246aa, 0xff536ecd)] public uint TestUInt; [Benchmark] public void ConvertBgraToArgbBits() { for (int i = 0; i < 1000; i++) { var u = (TestUInt & 0x000000FFU) << 24 | (TestUInt & 0x0000FF00U) << 8 | (TestUInt & 0x00FF0000U) >> 8 | (TestUInt & 0xFF000000U) >> 24; } } [Benchmark] public void ConvertBgraToArgbRotate() { for (int i = 0; i < 1000; i++) { var u = BitOperations.RotateRight(TestUInt & 0x00FF00FFu, 8) + BitOperations.RotateLeft(TestUInt & 0xFF00FF00u, 8); } } }