簡體   English   中英

為什么異步代碼比同步代碼快得多?

[英]Why is async code considered so much faster than synchronous?

為什么認為同步代碼比異步代碼慢得多並且占用更多資源? 例如,nginx比Apache更快,而NodeJS應用程序比PHP應用程序更快。

將同步代碼編譯成異步等效對象不是很簡單嗎? 至少在JavaScript中,許多人使用諸如async之類的庫來幫助編寫同步外觀的代碼。

編輯 :由於注釋中的一個問題:像這樣的同步代碼

byte[] buf = read(socket);
do_something(buf);

被認為是緩慢的,因為線程必須阻塞以從socket讀取,而

read(socket, function(buf) {
    do_something(buf);
});

被認為是快速的。 一方面,轉換應該是微不足道的,另一方面,兩種代碼都必須等待read ,一次僅是必須產生線程,而在另一種情況下,則必須返回到主事件循環

異步/非阻塞設計不一定更快,但在某些情況下,它們的伸縮性可優於同步/阻塞設計。 因此,當處理大量並行事務時,它們可以“更快”。

兩種方法之間的性能差異主要有兩個原因。 一個原因是線程上下文切換的開銷,另一個是某些平台(例如Java)上線程的內存消耗

我最近完成了一篇文章,解釋了為什么異步可以更好地擴展。 希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM