如果以下方法存在显着性能差异,我目前正在调查项目:
[HttpGet]
public async Task<IHttpActionResult> Test1()
{
await Task.Delay(TimeSpan.FromSeconds(10));
return Ok();
}
和
[HttpGet]
public IHttpActionResult Test2()
{
Thread.Sleep(TimeSpan.FromSeconds(10));
return Ok();
}
在我的理解中,第一个方法Test1是异步执行的,这意味着等待task.delay的结果,并且当前线程可以被其他请求重用。
第二种方法Test2同步执行,线程被阻塞10秒。然而OK结果是异步执行的,因为我的返回类型是IHttpActionResult。
我的问题如下:
期待您的回答!
答案 0 :(得分:0)
如果您可以将网站置于负载之下,即只能同时运行大量请求,您将只能看到运行Async方法的好处。只需运行一次就可以看出没有区别。
异步代码运行速度不快;它允许系统管理其线程池并提高并发性 - 即可以更有效地使用可用线程。
见Stephen Cleary的解释: