我一直听说使用异步编程模式会让我的代码运行得更快。为什么这是真的?没有相同的代码必须以任何一种方式运行,无论是现在运行还是以后运行?
答案 0 :(得分:3)
并不总是更快。事实上,只是设置和拆除异步环境会为代码增加大量时间。你必须分离一个新的进程/线程,设置一个事件队列/消息泵,并最终清理一切。 (即使您的框架隐藏了所有这些细节,它们也会在后台发生)。
优点是阻止。我们的代码很多都取决于外部资源。我们需要在数据库中查询要处理的记录,或从网站下载最新版本的内容。从您要求该资源获取信息直到您得到答案的那一刻起,您的代码就无所事事了。它正在阻塞,等待答案。您的程序花费阻止的所有时间完全浪费。
这就是async的设计目标。通过将“等待此阻塞操作”代码转换为异步请求,您可以让其余的非阻塞代码继续运行。
作为一个比喻,想象一位经理告诉他的员工那天该做什么。其中一项任务是给等待时间长的公司打电话。如果他告诉她同步拨打电话,她会打电话,等待而不做其他事情。使其保持异步,当手机在后台保持不动时,她可以完成许多其他任务。
答案 1 :(得分:0)
它运行相同的代码,但它不会等待完成任务的时间。它将继续执行代码,直到完成异步功能。