C#秒表计时异步/等待方法不准确

时间:2015-07-23 15:49:11

标签: c# asynchronous async-await stopwatch

我正在编写一些性能测试,并希望能够为异步方法计时。代码如下所示,其中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。有关定时异步方法的问题吗?解决方案是在动作本身进行计时(这会很烦人吗?)

1 个答案:

答案 0 :(得分:3)

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

  1. 您使用Fiddler进行测量的时间仅用于测量请求,而且您的代码无需处理响应。
  2. 此处的时间存在显着差异,您应该可以轻松地自行计算代码,以查看从请求之前的断点到请求之后需要多长时间。如果这接近30秒,那么你的秒表可能是准确的。
  3. 对我来说没有什么可以让你的时间不准确的事情。