秒表计时async/await方法不准确

本文关键字:await 方法 不准确 async | 更新日期: 2023-09-27 18:04:32

我正在编写一些性能测试,并希望能够对异步方法进行计时。代码看起来像这样,其中actionFunc<Task<HttpResponseMessage>>:

var sw = new Stopwatch();
HttpResponseMessage response = null;
sw.Start();
response = await action().ConfigureAwait(continueOnCapturedContext: false);
sw.Stop();

代码编译并运行正常,但是测量的毫秒比我们在Fiddler中看到的请求时间高100倍- Fiddler报告200-300ms,但秒表报告~30,000ms。对异步方法计时有什么问题吗?解决方案是在动作本身中执行计时(这会很烦人吗?)

秒表计时async/await方法不准确

这应该可以很好地测量异步任务完成所需的真实时间。您需要记住:

  1. 使用Fiddler测量的时间只测量请求,而不是代码处理响应所需的时间。
  2. 在时间上有很大的不同,您应该能够轻松地自己对代码进行计时,以查看从请求前的断点到请求后的断点需要多长时间。如果接近30秒,那么你的秒表可能是准确的。
  3. 对我来说,没有什么明显的东西会使你的时间不准确。