You should use BenchmarkDotNet. However here is a crude way of achieving what you want.
Your Method
private static async Task<User> GetUserAsync()
{
return await new ApiTester().GetUserAsync();
}
Async Timer task
private static async Task<double> GetUserMsAsync()
{
var sw = new Stopwatch();
sw.Start();
var user = await GetUserAsync();
sw.Stop();
return sw.Elapsed.TotalMilliseconds;
}
Tester
public static async Task Tester()
{
var sw = new Stopwatch();
try
{
var tasks = Enumerable.Range(0, 100)
.Select(x => GetUserMsAsync())
.ToArray();
sw.Start();
var results = await Task.WhenAll(tasks);
foreach (var result in results)
{
Console.WriteLine(result);
}
}
finally
{
sw.Stop();
Console.WriteLine($"sw : {sw.Elapsed:c}");
}
}
Usage
private static void Main(string[] args)
{
Tester().Wait();
Console.ReadKey();
}
Disclaimer, this is not really going to prove much if you don't understand what you are testing and the environment your are testing in. However, I'll assume you do.