如果是,如何確定最大值?這對我來說是最重要的部分。我真的很想手動設置它。我考慮過使用 ,因為我懷疑更多的并行性會產生任何額外的好處。該注釋似乎表明,它在某些時候被標記為棄用。runtime.GOMAXPROCS(0)從我收集到的信息來看,當涉及到圍棋例程時,唯一的限制因素是記憶,因為睡眠的圍棋例程仍然需要內存來堆疊。
3 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
這并不是絕對必要的。默認情況下,運行這些 goroutine 的線程數等于計算機上的 CPU 內核數(可通過 進行配置),因此在線程級別不會發生爭用。GOMAXPROCS
但是,由于內存緩存效應,準備運行的 goroutine 更少,可能會帶來性能優勢。例如,在 8 核計算機上,如果您有 1000 個活動 goroutine,這些 goroutine 都接觸到大量內存,則當一個 goroutine 再次運行時,所需的內存頁面可能已經從 CPU 緩存中逐出。使用較少的戈魯丁,緩存命中的幾率更高。
與性能問題一樣:確定的唯一方法是使用具有代表性的工作負載自己進行測量。

人到中年有點甜
TA貢獻1895條經驗 獲得超7個贊
在我們的測試中,我們確定最好生成固定數量的 worker 例程,并使用這些例程來執行所有工作。戈魯丁的創建和破壞是輕量級的,但并非完全沒有開銷。如果戈魯廷花費任何時間阻塞,則該開銷通常微不足道。
- 3 回答
- 0 關注
- 92 瀏覽
添加回答
舉報
0/150
提交
取消