| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | using System;using System.Globalization;using BenchmarkDotNet.Attributes;using BenchmarkDotNet.Running;using MediaBrowser.Common;namespace Jellyfin.Common.Benches{    [MemoryDiagnoser]    public class HexDecodeBenches    {        private string _data;        [Params(0, 10, 100, 1000, 10000, 1000000)]        public int N { get; set; }        [GlobalSetup]        public void GlobalSetup()        {            var bytes = new byte[N];            new Random(42).NextBytes(bytes);            _data = Hex.Encode(bytes);        }        [Benchmark]        public byte[] Decode() => Hex.Decode(_data);        [Benchmark]        public byte[] DecodeSubString() => DecodeSubString(_data);        private static byte[] DecodeSubString(string str)        {            byte[] bytes = new byte[str.Length / 2];            for (int i = 0; i < str.Length; i += 2)            {                bytes[i / 2] = byte.Parse(                    str.Substring(i, 2),                    NumberStyles.HexNumber,                    CultureInfo.InvariantCulture);            }            return bytes;        }    }}
 |