2016-05-28 42 views
1

我的程序是階乘函數的簡單遞歸實現。它的執行速度與我的電腦上的處理器數量有關嗎?我的程序不是多線程的。處理器數量是否會影響單線程程序的性能?

+0

[爲什麼單個線程進程在多個處理器/內核上執行?](http://stackoverflow.com/questions/8485947/why-does-a-single-threaded-process-execute-on-幾個處理器核心) –

+0

@ RaymondChen該問題是相關的,但它是一個明確的問題,而不是重複。 –

+0

這不是那麼直截了當。您擁有的核心越多,您的程序就會越慢,因爲另一個程序正在競爭處理器。但是這樣的程序也可以提高處理器芯片的溫度,迫使它降低時鐘頻率。這會減慢你的程序。大多數機器的使用方式,最可能的正確答案是「否」。 –

回答

2

不,它與處理器的數量無關。由於您的程序不是多線程的,因此它只能在單個線程中運行,一次只能在單個處理器上運行。

單個處理器的速度是不是一個計算機上增加其它處理器的存在,不同之處在於具有一個以上處理器可允許其他程序在其他核上運行,從而允許程序中使用的較大部分它正在運行的單個處理器。

由於Raymond Chen在評論中指出,如果您的線程跨CPU遷移,也可能出現緩存的複雜問題,其中occurs regularly

當然,這些可能是相對較小的整體效果 - 當然,除非程序是多線程的,否則一般不能指望程序在具有更多處理器的計算機上運行得更快。

+1

如果線程從一個處理器遷移到另一個處理器(例如因爲原始處理器正忙於處理中斷),可能會影響性能,因爲新處理器不會在高速緩存中承擔工作負載。 –

相關問題