9 ポイント 投稿者 xguru 2021-02-13 | 1件のコメント | WhatsAppで共有
  • コンテキストスイッチ時間: Async タスク 0.2µs vs カーネルスレッド 1.7µs

→ スイッチが I/O によって発生する場合、この時間差は同じになる(両方とも 1.7µs)

→ スレッド版をシングルコアのみで動かすと、非同期の利点もなくなる(ほぼ同程度になる)

  • 新規タスク生成: 非同期タスク ~0.3µs vs カーネルスレッド 17µs

  • メモリ使用量: 非同期タスク 数百バイト vs カーネルスレッド 20KiB(ユーザー 9.5KiB、カーネル 10KiB)

→ ほとんど何もしないタスクを基準としており、実際に動作する場合はさらに多く必要

  • 25万個の非同期タスクは容易に生成可能だが、4コア/32GiB のノートPCでは 8万個のスレッドが最大値

1件のコメント

 
xguru 2021-02-13

単に非同期のほうがはるかに性能・効率面で優れていると言うだけでなく、内部をもう少し理解したうえで話そうとして行われたベンチマーク。

実際、非同期開発はバグも多く、より難しい点もあるため注意が必要です。