為什麼添加並發會減慢Go 代碼
問題:
問題:儘管看起來適合並行化,加入並發性會顯著減慢Go 程式碼的速度。這是為什麼?
答案:問題是由於使用 rand.Float64() 函數而引起的,該函數使用帶有互斥鎖的共享全域物件。此鎖會序列化對隨機數產生器的訪問,從而在嘗試同時運行程式碼時降低效能。
解決方案:要解決此問題,請建立一個單獨的實例每個 goroutine 的 rand.Rand 結構。透過這樣做,每個 goroutine 都有自己的隨機數產生器,消除了對互斥鎖的需要並顯著提高了效能。以上是為什麼使用'rand.Float64()”添加並發有時會減慢 Go 程式碼的速度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!