private static Task run(ProxyCache.ProxyCacheClient client) { for (int i = 0; i < 1000; i++) { client.SetAsync(SetPRequest(Guid.NewGuid().ToString(), "hola mundo")); } return(Task.CompletedTask); }
static async Task Main2(string[] args) { await Task.Delay(35000); ThreadPool.SetMinThreads(25000, 25000); var channel0 = new Channel("localhost", 91, ChannelCredentials.Insecure); var channel1 = new Channel("localhost", 91, ChannelCredentials.Insecure); var channel2 = new Channel("localhost", 91, ChannelCredentials.Insecure); var client0 = new ProxyCache.ProxyCacheClient(channel0); var client1 = new ProxyCache.ProxyCacheClient(channel1); var client2 = new ProxyCache.ProxyCacheClient(channel2); var response = client0.Set(SetPRequest("superkey", "hola mundo")); Console.WriteLine("Status Set keys {0}", response.Results.FirstOrDefault().Status); var valor = client0.Get(GetPRequest("superkey")); Console.WriteLine("Fetch Value {0}", valor.Results.FirstOrDefault().Value.ToStringUtf8()); var deleted = await client0.DeleteAsync(SetPRequest("superkey")); Console.WriteLine("Value deleted {0}", deleted.Results.FirstOrDefault().Status); var deletedNonExist = await client0.DeleteAsync(SetPRequest("superkey-notexists")); Console.WriteLine("Value not deleted {0}", deletedNonExist?.Results?.FirstOrDefault()?.Status); var sw = new Stopwatch(); for (int i = 0; i < 1000000; i++) { sw.Restart(); //for (int ix = 0; ix < 10000; ix++) //{ // await client0.GetAsync(GetRequest("superkey")); // // await client0.SetAsync(SetRequest("superkey", "hola mundo")); //} var tasks = new[] { run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1), run(client2), run(client0), run(client1) }; await Task.WhenAll(tasks); Console.WriteLine($"Elapsed {sw.ElapsedMilliseconds} ratio {40000 / sw.Elapsed.TotalSeconds }"); await Task.Delay(4000); } }