1

Compaq Visual Fortranでコンパイルされたいくつかの計算を実行しているWin32コンソールアプリケーションがあります(これはおそらく問題ではありません)。

それらの多くを同時に実行する必要があります。

XPでは、それらは一緒に約90-100%のCPUを使用し、非常に高速に動作します。Vistaでは、実行する数に関係なく、CPUの10%以下しか使用せず、それぞれ非常に低速で動作します。

かなりのコンソール出力が行われていますが、今では非常に多くなっています。私はすべてのウィンドウを最小化することができます、それは役に立ちません。CPUは基本的に何もしていません...

何か案は?

アップデート:

いいえ、これらは異なるマシンですが、比較的同じハードウェアを実行します。2.スレッドは使用されません。これは、win32でコンパイルされたDOS用の非常に古い(20年)プレーンアプリです。それらが出会うまで反復を計算し、それが持っているすべてを消費することになっています。私の印象-VISTAはそれ以上のCPUを与えません

4

6 に答える 6

2

コンソール出力をファイルにリダイレクトしようとしましたか?アプリケーションがコンソールへの書き込みを保留している場合(これは残念ながら発生することがあります)、コンソールに書き込むよりも単純なファイルに書き込む方がはるかに高速であるため、出力をリダイレクトすると役立つはずです。

あなたはそうするようにこれをします

c:\temp> dir > output.log

出力をまったく気にしない場合は、にリダイレクトすることで出力を破棄できますnul。例えば:

c:\temp> dir > nul
于 2008-11-17T19:58:52.540 に答える
2

Vista には、特定のコンソール アプリケーションを 32MB の RAM に制限する既知の「機能」がありました。Compaq Visual Fortran でコンパイルされたものがこの「機能」の影響を受けるかどうかはわかりません。

この記事は 2008 年 10 月に更新されたようで、問題は依然として存在します。

于 2008-11-17T20:05:50.293 に答える
1

Daok の投稿を詳しく説明すると、XP マシンはこのプロセスにバインドされた CPU である可能性がありますが、Vista マシンは他のリソースにバインドされています。

明確にするために:stdout(またはその他)への出力は、処理を遅くする可能性があります。(コンテキスト切り替えやファイルアクセスなども同様)

于 2008-11-17T19:17:27.457 に答える
1

あなたのループは明らかに単純な計算ではありません。どこかにブロッキングシステムコールがあります。XP で動作したからといって、アプリにバグがないわけではありません。

コンソール ウィンドウを最小化しても改善が見られないため、問題にはなりません。私の経験では、コンソール ウィンドウが最小化されているときではなく、コンソール ウィンドウがテキストを描画している場合にのみ、コンソール出力によってプログラムの速度が低下します。

于 2009-02-26T23:24:11.053 に答える
1

ティムがほのめかしたように、コンソール出力 (stdout) は非常に高価です。

コンソール出力を各プロセスの個別のログ ファイルにリダイレクトしながら、テストを再実行することをお勧めします。可能であれば、別のテスト実行で出力の冗長性を調整します。

それ以外にも、他にも明らかな可能性があります。ハードウェアが大幅に異なっているか、他の主要なプロセスが実行されているか、競合している共有リソースはありますか?

明白なもの以外に、共有ファイルなどの明白でないリソースの競合を探します。

しかし、私が注目する主な領域は、コードが 2 つの OS 環境用にコンパイルされる方法に大きな違いがあるかどうかです。Fortran コードは、互換性など、Vista で実行するときに何らかの特別なペナルティを被っているのではないかと思います。モード。Vista がどの程度サポートされているか、特に Vista 向けのコンパイルをターゲットにできるかどうかを確認してください。また、バグ レポート、機能リクエストなどで同様の問題を報告している人を探してください。

于 2008-11-17T20:01:11.020 に答える
0

Vista と XP で同じマシン ハードウェアですか? それ以上は必要ないため、Vista の 10% しか使用しない場合があります。スレッドを使用していますか?より良いアイデアを得るには、プロジェクトに関するより多くの情報が必要だと思います。プロファイラーを使用して何が起こっているかを確認しようとしましたか?

于 2008-11-17T19:14:50.707 に答える