首頁 >後端開發 >Golang >為什麼使用'rand.Float64()”添加並發有時會減慢 Go 程式碼的速度?

為什麼使用'rand.Float64()”添加並發有時會減慢 Go 程式碼的速度?

Patricia Arquette
Patricia Arquette原創
2024-12-10 14:00:13322瀏覽

Why Does Adding Concurrency Sometimes Slow Down Go Code Using `rand.Float64()`?

為什麼添加並發會減慢Go 代碼

問題:

問題:

儘管看起來適合並行化,加入並發性會顯著減慢Go 程式碼的速度。這是為什麼?

答案:

問題是由於使用 rand.Float64() 函數而引起的,該函數使用帶有互斥鎖的共享全域物件。此鎖會序列化對隨機數產生器的訪問,從而在嘗試同時運行程式碼時降低效能。

解決方案:要解決此問題,請建立一個單獨的實例每個 goroutine 的 rand.Rand 結構。透過這樣做,每個 goroutine 都有自己的隨機數產生器,消除了對互斥鎖的需要並顯著提高了效能。

以上是為什麼使用'rand.Float64()”添加並發有時會減慢 Go 程式碼的速度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn