0
我正在使用goroutine遇到一些奇怪的行爲,請提供建議或評論我可能做錯的事情。這是我的過程:影響goroutine性能的因素
我正在使用goroutines同時執行模擬,但由於某些原因,我花費的時間隨着我放入的goroutines數量增加,使得我的模擬無法在合理的時間內完成。下面是我看到的東西:
每10K夠程啓動,由5秒
計算時間的增加,我不看到CPU或內存不足。但是,對於每10k個例程,CPU使用率僅增加一點點。例如,當我把20萬個夠程,CPU使用率在70%左右,我沒有使用磁盤
我跑了模擬而不觸發夠程,它完成得非常快,所以是緩慢的內部或
由於goroutines
我試圖在每個goroutine內部1次使用額外的goroutines來並行運行一些工作量。 CPU使用率提高到100%,但總體速度下降50%...
我正在通過一些大的結構使用指針的goroutines。所有的goroutines使用相同的數據。
有沒有人對我可能需要優化的東西有任何線索,或者建議我進行任何測試?謝謝!
你的程序是否正在修改結構的數據? – Acidic
如果所有的例程都連續運行(即不阻塞I/O),那麼通過擁有比系統可同時運行的線程數更多的goroutine,您將不會獲得任何性能優勢。事實上,擁有更多的goroutines會減慢速度,因爲它們之間的切換涉及到開銷。 –