我有兩個嵌套的Parallel.ForEach循環,對並行度沒有限制。我的理解是,對於使用此設置的大多數情況,更多內核=更快的運行時間。但是,在兩臺不同的機器上運行,一臺採用4核4線程,2.8GHz CPU,另一臺採用6核12線程3.3GHz CPU。該程序需要相同的時間長度運行:約5小時。Parallel.ForEach沒有提供更多的內核加速
我無法通過Google搜索找到任何東西(雖然並不完全確定除了這個問題的標題之外要搜索什麼),這將解釋爲什麼會這樣。
我注意到,根據visual studio診斷工具,程序在更快的CPU機器上使用的系統內存少得多,爲35MB而160MB,CPU使用垃圾收集器的頻率更高。不知道爲什麼這些會是這種情況,或者如果他們在運行時間有什麼影響?
這實際上完全取決於在並行中運行的代碼,例如,如果它正在遠程服務器上等待,更多的線程不會幫助您。 – Skami
@Skami它全部使用本地數據運行,不會在外部等待。它基本上只是運行大量不同的起點和終點的dijkstra算法。 – Jack
@Jack它不一定是外部的,如果您在每次試用期間從磁盤重新加載數據,可能會導致相同的問題。除非您向我們展示並行運行的代碼,否則我們無法確定。 –