2008-09-10 27 views
11

非常に広い範囲のCPUとアーキテクチャで動作するはずのアプリケーション(いくつかは埋め込みデバイスに非常に近い)上でいくつかのボトルネックを最適化しようとしています。プロファイリングのCPU速度を制限する

しかし、私のプロファイラの結果は、CPUの速度のために重要ではありません。プロファイリングの目的でCPUの速度を制限する方法はありますか(WindowsまたはMac OS Xが望ましい)。

私は仮想マシンを使用することを考えましたが、そのような機能は何も見つかりませんでした。

答えて

0

最近、Downloadsquad.comにアプリがありました。私はそれの名前を覚えていないが、それはいくつかの楽しい堅いワースプロセッサーとタスクマネージャーでした。それは、どのアプリがどのCPUにあるのかを管理することだけだったかもしれませんが、おそらくそれはあなたにこれを与えるでしょう。私は今日の午後にそれを探して、私がそれを見つけたら返答しようとします。

0

多くのプロファイラー(たとえばoprofile - しかしLinuxのみ)では、データを収集する頻度を設定できます。プロファイラがこれをサポートしているかどうかを確認し、そうでない場合は別の方法を試してみてください。

+0

私は彼がCPUスピードと他の操作(I/O、ユーザー入力など)の速度との関係が古いシステムで経験した関係に近いので、CPUを遅くしたいと考えています。私は収集頻度の増加がそこでどのように役立つかわかりません。 – sleske

+0

@sleske私は、CPUが非常に高速であり、プロファイルサンプルがほとんど収集されなかったことを意味していると仮定したので、意味のあるデータは返されません。 –

1

私は恐れています。私はあなたの地域で古いハードウェアを探し始める以外の答えは分かりません。 CPUは、(通常)影響を及ぼすことができる唯一の変数ではありません。 L1/L2キャッシュサイズ、メモリバス速度、メモリ速度/レイテンシ、ハードドライブ速度などは、多くのアプリケーションで重要な要素です。

2

パフォーマンスの問題がどこにあるかを知るためにコードがどれくらい速いのかを知る必要があるのはよくある誤解です。それは問題発見と問題測定を混同します。

This is the method I use.

プログラムでいくつかの無駄なロジックがある場合、それは関係なく、それを実行するものCPU無駄になることはありません。

あなたが知る必要があるのは、その場所です。測定のために、どれくらい大きいかを知る必要はありません。あなたはそれが固定する必要があるだけ十分大きいことを知る必要があります。

通常、さまざまなサイズの問題が多数あります。おそらく最大のものが最初に見つかるでしょうが、どのような順序で修正しても、修正したほうが、より大きなパーセンテージを取るため残りのものを簡単に見つけることができます。

+0

あなたにはポイントがありますが、まず問題があれば*を知る必要があります。効率の悪いコードがありますが、非効率性はI/O待ち時間によって減少する場合、最適化のポイントはありません。したがって、システムコンポーネントの速度の関係はパフォーマンステストの重要な要素です。そのためにCPUを遅くする必要があります。 – sleske

+0

@sleske:だから私はCPU時間とブロック時間をあまり区別したくないのです。パフォーマンスのバグには、いずれかのバグが多すぎる可能性がありますが、OPでは実際にI/Oは言及されませんでした。私のポイントは、10の指示で何かをやっている、1は仕事をする、1hzと1ghzで無駄です。私は、廃棄物を分離する目的で、パーセントよりも時間が重要だと考えています。 –

+1

@sleske:...私はそれがとてもうまくいったとは思わない。ここでは、約2桁以上の大きさの一連のパフォーマンス上の問題があった例(http://stackoverflow.com/questions/926266/performance-optimization-strategies-of-last-resort/927773#927773)がありますその1つはI/O問題でした。いくつか大きなものを取り除いた後、I/Oが最大になったところまで来ました。 CPUが異なる速度で走った場合、それはちょうど異なる時点で起こります。 –

0

私は仮想 マシンを使用してについて考えてきましたが、 ような機能を持つ任意のを発見していません。

なぜその機能を明示的に提供するVMが必要ですか?ホストOSでVMのCPU使用率を制限するだけです(通常のプロセスの場合)。それとまったく同じ効果があるはずです。

あなたはこれを行うことができます。 Linuxではcpulimitを使用します。 MS Windowsにも同様のソリューションが存在します。

+0

これは非常に滑らかなCPUを得ます。半分の時間は速く、次に半分の時間は何もしません.VMシステムの仕組みによって異なります。 –

関連する問題