2016-05-28 6 views
1

私のプログラムは階乗関数の単純な再帰的な実装です。実行速度はコンピュータのプロセッサ数に関係していますか?私のプログラムはマルチスレッドではありません。プロセッサ数がシングルスレッドプログラムのパフォーマンスに影響しますか?

+0

[なぜ単一のスレッドプロセスが複数のプロセッサ/コアで実行されるのですか?](http://stackoverflow.com/questions/8485947/why-does-a-single-threaded-process-execute-on-いくつかのプロセッサコア) –

+0

@RaymondChenその質問は関連しますが、重複した質問ではありません。 –

+0

それは簡単ではありません。コア数が多いほど、別のプログラムがプロセッサーと競合しているため、プログラムが遅くなる可能性は低くなります。しかし、このようなプログラムはプロセッサチップの温度を上昇させ、クロック速度を低下させる可能性があります。それはあなたのプログラムを遅くします。ほとんどのマシンが使用されている方法、最も正しい正解は「いいえ」です。 –

答えて

2

いいえ、プロセッサの数には関係ありません。あなたのプログラムはマルチスレッド化されていないので、一度に1つのプロセッサ上で実行される単一のスレッドでのみ実行されます。

コンピュータ上に他のプロセッサが存在することによって、単一プロセッサの速度は向上しませんが、より多くのプロセッサでは他のプログラムが他のコアでも実行できる可能性があります。それが実行されている単一のプロセッサ。

コメントで指摘されたRaymond Chenには、スレッドがCPU間で移行された場合に発生する可能性のあるキャッシングに関する複雑な問題もあります。occurs regularly

もちろん、これらは全体的に相対的に小さな効果になる可能性があります。プログラムがマルチスレッド化されていない限り、より多くのプロセッサを搭載したコンピュータでプログラムを実行することは一般的には期待できません。

+1

新しいプロセッサがキャッシュ内のワークロードを持たないため、スレッドがあるプロセッサから別のプロセッサに移行すると(たとえば、元のプロセッサが割り込みを処理しているため)、パフォーマンスに影響を与える可能性があります。 –

関連する問題