private static async Task GetBench(KVApi <byte[]> kvl) { Console.WriteLine("Starting get bench"); var sw = Stopwatch.StartNew(); var counter = 0; await foreach (var k in kvl.Get()) { counter++; if (counter % 10000 == 0) { Console.WriteLine($"{counter}"); } } sw.Stop(); Console.WriteLine($"Runtime: {sw.Elapsed}"); }
private static async Task ParallelBench(KVApi <byte[]> kvl, byte[] value, Func <byte[], byte[], Task> func) { var data = Enumerable.Range(0, Count) .Select(i => Encoding.UTF8.GetBytes($"key{i}")) .ToList(); var counter = 0; var parts = Partitioner .Create(data) .GetPartitions(8) .Select(keyList => Task.Run(async delegate { using var iter = keyList; while (iter.MoveNext()) { Interlocked.Increment(ref counter); if (counter % 1000 == 0) { Console.WriteLine($"{counter}"); } await func(iter.Current, value); } }));
private static async Task BatchedBench(KVApi <byte[]> kvl, byte[] value) { var data = Enumerable.Range(0, Count) .Select(i => new KeyValuePair <byte[], byte[]>(Encoding.UTF8.GetBytes($"key{i}"), value)) .Batch(10000) .ToList(); Console.WriteLine("Starting batched bench"); var sw = Stopwatch.StartNew(); var counter = 0; foreach (var entries in data) { counter++; await kvl.Add(entries); if (counter % 10000 == 0) { Console.WriteLine($"{counter}"); } } sw.Stop(); Console.WriteLine($"Runtime: {sw.Elapsed}"); }