2016-05-28 6 views
1

Mein Programm ist eine einfache rekursive Implementierung der faktoriellen Funktion. Bezieht sich die Ausführungsgeschwindigkeit auf die Anzahl der Prozessoren auf meinem Computer? Mein Programm ist nicht multi-threaded.Beeinflusst die Prozessoranzahl die Leistung eines Singlethread-Programms?

+0

Mögliches Duplikat von [Warum wird ein Prozess mit nur einem Thread auf mehreren Prozessoren/Kernen ausgeführt?] (Http://stackoverflow.com/questions/8485947/why-does-a-single-hreaded-process-execute-on-- mehrere Prozessoren-Kerne) –

+0

@ RaymondChen diese Frage ist relevant, aber es ist eine eindeutige Frage, kein Duplikat. –

+0

Es ist nicht so einfach. Je mehr Kerne Sie haben, desto weniger wird Ihr Programm verlangsamt, weil ein anderes Programm um den Prozessor konkurriert. Aber ein solches Programm kann auch die Prozessorchip-Temperatur erhöhen und zwingt es, die Taktrate zu reduzieren. Das verlangsamt dein Programm. So wie die meisten Maschinen verwendet werden, ist die wahrscheinlich richtige Antwort "Nein". –

Antwort

2

Nein, es hängt nicht mit der Anzahl der Prozessoren zusammen. Da Ihr Programm nicht Multithread ist, wird es nur in einem einzigen Thread ausgeführt, der jeweils auf einem einzelnen Prozessor ausgeführt wird.

Die Geschwindigkeit eines einzelnen Prozessors wird durch die Existenz von anderen Prozessoren auf einem Computer nicht erhöht, mit der Ausnahme, dass mehr mit Prozessoren andere Programme ermöglichen kann auf anderen Kernen zu laufen, damit Ihr Programm ermöglicht einen größeren Anteil von verwenden der einzelne Prozessor, auf dem es ausgeführt wird.

Wie in den Kommentaren Raymond Chen hingewiesen, gibt es auch komplizierte Probleme mit dem Zwischenspeichern, die auftreten können, wenn Ihr Thread über CPUs migriert wird, die occurs regularly.

Natürlich sind dies wahrscheinlich relativ kleine Auswirkungen insgesamt - und Sie können im Allgemeinen nicht erwarten, dass ein Programm auf einem Computer mit mehr Prozessoren schneller ausgeführt wird, es sei denn, das Programm ist Multithread.

+1

Es kann sich auf die Leistung auswirken, wenn der Thread von einem Prozessor zu einem anderen migriert (da der ursprüngliche Prozessor gerade einen Interrupt verarbeitet), da der neue Prozessor die Auslastung nicht im Cache hat. –