go爲什麼快

參考文獻:https://studygolang.com/articles/26879?fr=sidebar

go快的主要原因:

1、上下文切換代價小: Goroutine 上下文切換隻涉及到三個寄存器(PC / SP / DX)的值修改;

      而對比線程的上下文切換則需要涉及模式切換(從用戶態切換到內核態)、以及 16 個寄存器、PC、SP…等寄存器的刷新;因爲在覈心上交換線程會花費很多時間。上下文切換的延遲取決於不同的因素,大概在在 50 到 100 納秒之間。考慮到硬件平均在每個核心上每納秒執行 12 條指令,那麼一次上下文切換可能會花費 600 到 1200 條指令的延遲時間。實際上,上下文切換佔用了大量程序執行指令的時間。

2、內存佔用少:線程棧空間通常是 2M,Goroutine 棧空間最小 2K;Golang 程序中可以輕鬆支持10w 級別的 Goroutine 運行,而線程數量達到 1k 時,內存佔用就已經達到 2G。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章