123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System;
- using System.Globalization;
- using BenchmarkDotNet.Attributes;
- using BenchmarkDotNet.Running;
- using MediaBrowser.Common;
- namespace Jellyfin.Common.Benches
- {
- [MemoryDiagnoser]
- public class HexDecodeBenches
- {
- [Params(/*0,*/ 10, 100, 1000, 10000, 1000000)]
- public int N { get; set; }
- private string data;
- [GlobalSetup]
- public void GlobalSetup()
- {
- var tmp = new byte[N];
- new Random(42).NextBytes(tmp);
- data = Hex.Encode(tmp);
- }
- public 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;
- }
- [Benchmark]
- public byte[] Decode() => Hex.Decode(data);
- [Benchmark]
- public byte[] Decode2() => Hex.Decode2(data);
- //[Benchmark]
- public byte[] DecodeSubString() => DecodeSubString(data);
- }
- }
|