C# · 12月 21, 2021

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

我正在写一些性能测试,并希望能够为异步的方法计时.代码如下所示,其中action是Func:

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

代码编译并运行正常,但测量的毫秒数比我们在fiddler中看到的请求时间高约100倍 – fiddler报告200-300ms,但秒表报告~30,000ms.有关定时异步方法的问题吗?解决方案是在动作本身进行计时(这会很烦人吗?)最佳答案这应该可以很好地衡量异步任务完成所需的时间.你需要记住:

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