我正在编写一些性能测试,并希望能够为异步方法计时。代码如下所示,其中 action
是 Func<Task<HttpResponseMessage>>
:
var sw = new Stopwatch();
HttpResponseMessage response = null;
sw.Start();
response = await action().ConfigureAwait(continueOnCapturedContext: false);
sw.Stop();
代码编译和运行正常,但测得的毫秒数比我们在 Fiddler 中看到的请求时间长约 100 倍 - Fiddler 报告 200-300 毫秒,但秒表报告 ~30,000 毫秒。定时异步方法有什么问题吗?解决方案是在 Action 本身中进行计时(这会很烦人吗?)
最佳答案
这应该可以很好地测量完成异步任务所需的真实时间。您需要记住:
- 您使用 Fiddler 测量的时间仅测量请求,而不是您的代码处理响应所花费的时间。
- 此处的时间存在显着差异,您应该能够轻松地自己对代码计时,以了解从请求之前的断点到请求之后的断点需要多长时间。如果这接近 30 秒,那么您的秒表可能是准确的。
- 对我来说没有任何明显的东西会使你的时间不准确。
关于c# - 秒表计时异步/等待方法不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592279/