From cc0d6a2dea7e69052bb264bcd346a452a51ab67d Mon Sep 17 00:00:00 2001 From: sunface Date: Wed, 26 Jan 2022 11:26:02 +0800 Subject: [PATCH] =?UTF-8?q?add=20ascyn=E5=92=8C=E5=A4=9A=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E6=80=A7=E8=83=BD=E5=AF=B9=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book/contents/async/getting-started.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/book/contents/async/getting-started.md b/book/contents/async/getting-started.md index ba3b127d..d0cfb030 100644 --- a/book/contents/async/getting-started.md +++ b/book/contents/async/getting-started.md @@ -56,6 +56,15 @@ - 有大量 `CPU` 密集任务需要并行运行时,例如并行计算,选多线程模型,且让多线程数等于或者稍大于 `CPU` 核心数 - 无所谓时,统一选多线程 +#### async和多线程的性能对比 + +| 操作 | async | 线程 | +| ---- | ----- | ---- | +| 创建 | 0.3微妙 | 17微妙 | +| 线程切换 | 0.2微妙 | 1.7微妙 | + +可以看出,`async` 在线程切换的开销显著低于多线程,对于 IO 密集的场景,这种性能开销累计下来会非常可怕! + #### 一个例子 在大概理解`async`后,我们再来看一个简单的例子。如果想并发的下载文件,你可以使用多线程如下实现: ```rust