(テスト目的で)コンピューターの速度を落とす方法は?[閉まっている]


20

ほとんどの人が同意するように、低速のマシンを提供することで開発者に高速コードを作成することを奨励することは良い考えではありません。しかし、その質問にはポイントがあります。私の開発マシンは高速であるため、不愉快なほど非効率なコードを書くこともありますが、それは他の人のマシンで実行する場合にのみ明らかになります。

ターボチャージされた開発用マシンを一時的に遅くする良い方法は何ですか?「速度」の概念には、次のようないくつかの要因が含まれます。

  • CPUクロック周波数。
  • CPUコアの量。
  • メモリとプロセッサキャッシュの量。
  • さまざまなバスの速度。
  • ディスクI / O。
  • GPU。

34
「ターボボタン」を押してください...いいえ、待ってください。
LennyProgrammers

6
問題の根源は次のとおりです。「非常に非効率的」。コーディング習慣を変更する
ダークナイト

16
@ダーナイト:いいえ、そうではありません。あなたはする必要が最初に速いそれを作る、その後、右のそれを作る 必要があれば。何を最適化するかを知るには、問題のある部分をテストして調べる必要があります。そもそも物事を可能な限り速くすることはあなたの時間の無駄であり、おそらくそれを正しく行うことの無駄です。
ジョナスプラッカ

1
まあ私は部分的に同意します。ただし、最初から効率的なコーディング習慣がある場合は、その後、「適切に機能させる」ことで、後の「高速化」に費やす時間を短縮できます。
ダークナイト

4
@Darknight:@Joonasは非常に賢明な質問をしていると思います。「コーディング習慣を変える」だけで十分であるという考えは現実的ではありません。次に例を示します。(stackoverflow.com/questions/926266/…)そして、IDEなしで低速のマシンで時間を計ることができるという考えは、パフォーマンスのバグを見つけるのに十分であると想定しています。多くの人が話をプロファイリングが、約やって(成功した)、それを別の問題です。本当に私(と私が思う他の人)を助けるのは、Joonasが求めていることです。
マイクダンレイヴィ

回答:


39

メモリが制限され、コアが1つだけの仮想マシンでテストを実行します。

人々がまだ持っているかもしれない古いマシンは、ほとんどがPentium 4時代のものです。それはそれほど非現実的ではありません-私は今自分で使っています。現在の多くのPCでのシングルコアのパフォーマンスは、通常それほど良くはなく、さらに悪い場合があります。RAMパフォーマンスはCPUパフォーマンスよりも多くの点で重要であり、古い1GB P4よりも少し厳しく制限することで、それを少し補います。

それに失敗したら、少しでもお金をかけたければネットブックを購入してください。その上でテストを実行します。


1
または、高齢者のラップトップ。

仮想マシンの問題は、それらのどれも(AFAIK)がIEEE 1394(firewire)ポートをサポートしていないことです。私のソフトウェアのいくつかは...そう、ファイヤワイヤで接続されたカメラを使用しています
Joonas Pulakkaに

本当のものは、あなたがVMに任意のPCIデバイスを割り当ててみましょう
ハビエル・

3
Xenの仕事になる可能性があります。仮想マシンにはホストO / Sはありませんが、それ自体が最上層です。Unixの歴史はかなりありますが、現在では独自のOSをサポートできます。しかし、私はそれを使用したことはなく、特定のVMのパフォーマンスとリソースをどの程度制御できるかわかりません。
Steve314

1
+1 VMは高度に調整可能で、テストする環境を正確に提供します。私はこの目的のために自分でVMWareを使用しています。
ゲイリーロウ

11

重大なアルゴリズムの非効率性を見つける方法は、コードをプロファイルすることです。メモリの過剰使用をキャッチする方法は、最初にターゲットが使用するメモリの量を理解してから、それに応じて設計し、その環境で定期的にテストすることです。

スレッドコードを記述している場合、CPU速度の異なる複数のマシンでテストすると、スレッド処理の特定のタイミング関連のバグを強調するのに役立ちますが、スレッドロジックの積極的なユニットテストは必須です。


1
いいえ、プロファイリングはアルゴリズムの非効率性をキャッチしません。プログラムを高速化する必要がある場合はプログラムがどこで時間を費やしているのかを示しますが、高速化する必要はありません。
デヴィッドソーンリー

ここでの区別が欠けていると思います。プロファイリングでは、CPUサイクルを費やしている場所が最適以下であるかどうかがわからないという場合は、同意します。その判断を下すには経験が必要です。
マイケルショー

4
@David Thornley&@Ptolemy:アルゴリズムの非効率性やコードのホットスポットは、コアの問題の二次的な問題だと思います。「遅すぎるのか、遅すぎるのか」これは主観的ですが、最も重要な質問でもあります。実際に遅く感じない場合、アルゴリズムが非効率な場合はどうでしょうか?必要なことを行います!または、非常に最適なアルゴリズムに関係なくプログラムが遅すぎると感じた場合は、アプローチ(アーキテクチャ?プログラミング言語?何か!)を完全に変更する必要があります。非常に最適なアルゴリズムを持つことは、プログラムの
速度低下の

1
アルゴリズムの非効率性を明らかにするには、テスト用に漸進的なサイズのデータ​​セットを使用します。
rwong

10

マシンの速度を落とすために行うことは、おそらくハックでしょう。

以下にいくつかの提案を示します。

  • 仮想マシンを使用する
  • マシン上のコードのプロファイルを作成し、ボトルネックを探します
  • 「パフォーマンステスト」に古いマシンを使用する

@mattそれはどういう意味ですか?
ジョニー

1
@johnny:ジェイソンがアプリケーションのプロファイリングを提案しているので、私は投票していることを意味します。
マットエレン


4

これは非常に古い質問ですが、この状況にある他の人にとっては理解していることです。CPUKillerを試すことができます。基本的には、プロセッサの異なる%を消費するように構成できる小さなアプリです。http://www.cpukiller.com/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.