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

Goa*_*ine 6 c# asynchronous stopwatch async-await

我正在写一些性能测试,并希望能够为异步的方法计时.代码看起来像这样,其中action是Func<Task<HttpResponseMessage>>:

var sw = new Stopwatch();
HttpResponseMessage response = null;

sw.Start();
response = await action().ConfigureAwait(continueOnCapturedContext: false);
sw.Stop();
Run Code Online (Sandbox Code Playgroud)

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

Sha*_*ner 3

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

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

  • 我有同样的问题,秒表时不时地给我一个错误的值,这个值比实际值更高。 (3认同)