【发布时间】:2015-10-15 22:15:18
【问题描述】:
我有一个方法,它只有一个任务要做并且必须等待该任务完成:
public async Task<JsonResult> GetAllAsync()
{
var result = await this.GetAllDBAsync();
return Json(result, JsonRequestBehavior.AllowGet);
}
public async Task<List<TblSubjectSubset>> GetAllDBAsync()
{
return await model.TblSubjectSubsets.ToListAsync();
}
它比我在没有异步等待的情况下运行它要快得多。 我们知道
async 和 await 关键字不会导致额外的线程 创建的。异步方法不需要多线程,因为异步 方法不在自己的线程上运行。该方法在当前运行 同步上下文并仅在线程上使用时间 方法处于活动状态
根据此链接:https://msdn.microsoft.com/en-us/library/hh191443.aspx#BKMK_Threads。当我们没有另一个线程来处理这项工作时,速度更快的原因是什么?
【问题讨论】:
-
你如何确定一个比另一个快?
-
我已经测试过,异步方法的运行速度大约快了两倍
-
请再次阅读我的评论。我问你,你是怎么得出这个结论的。你测量了什么?你是怎么测量的?如果没有这些信息,我们将无能为力。
-
在客户端我签入时间轴 ajax 请求和服务器端我减去开始时间和结束时间
-
请向我们展示“非异步”版本——但无论如何,9 毫秒与 17 毫秒的客户端时间不太可能是统计上显着的性能衡量标准。连接延迟、CPU 调度等方面的变化可能会导致更多的噪音。
标签: c# multithreading performance asynchronous