wabbajack/Wabbajack.Benchmark/WorkQueueBenchmarks.cs

54 lines
1.3 KiB
C#
Raw Normal View History

2021-02-04 03:48:30 +00:00
using System;
using System.Linq;
using System.Threading.Tasks;
using BenchmarkDotNet.Attributes;
using Wabbajack.Common;
namespace Wabbajack.Benchmark
{
public class WorkQueueBenchmarks
{
private int[] _itms;
private WorkQueue _queue;
private TempFile _file;
private Random _rdm;
[Params(2, 4, 8, 16, 32, 64, 128, 256)]
public int Threads { get; set; }
[GlobalSetup]
public async Task Setup()
{
_rdm = new Random((int)DateTime.Now.ToFileTimeUtc());
_itms = Enumerable.Range(0, Threads * 10).ToArray();
_queue = new WorkQueue(Threads);
_file = new TempFile();
await using var f = await _file.Path.Create();
var data = new byte[1024 * 1024 * 10]; // 1GB
_rdm.NextBytes(data);
await f.WriteAsync(data);
}
[GlobalCleanup]
public async Task Cleanup()
{
_queue.Dispose();
await _file.DisposeAsync();
}
/* [Benchmark]
public async Task SleepTask()
{
await _itms.PMap(_queue, async f => await Task.Delay(1));
}*/
[Benchmark]
public async Task FileHashTask()
{
await _itms.PMap(_queue, async f => await _file.Path.FileHashAsync());
}
}
}