-1

偏微分方程式を数値的に解くC++コードがあります。すべてが正常に機能しますが、最初の10回ほどの反復の後、コードの実行速度は約3倍になります。

いくつかの関連情報:

  • 私は多くの計算にパッケージEigenを使用しています
  • 大量のデータを配列に格納しています(反復ごとに約100000倍精度値)

コンピューターのしくみやC++でのコーディングについてはよくわかりません。この問題を解決できるように、誰かが私を正しい方向に向けてくれるのではないかと考えていました。

役に立ったらコードを投稿することもできますが、非常に長いです。

4

1 に答える 1

2

オリが言ったように、それは何でもかまいません。

それはアルゴリズムかもしれません。そのコードが一定量の反復後に遅くなるはずがないかどうか知っていますか? 問題の性質上、プログラムの速度が低下している可能性があります。

コンピューターのメモリが不足している可能性があります。より多くのメモリを搭載したコンピューターで同じプログラムを実行してみてください。次に、メモリ プロファイリングを実行し、メモリ内にあるが使用されていないオブジェクト (大きな配列など) を特定する必要があります。そして、それが起こらないようにコードを修正してください。「メモリリーク」を調べて、それを修正する方法を理解してください。

メモリ リークが発生していない可能性もありますが、反復が積み重なっていくにつれて、プロセスはより多くのメモリを必要とし、メモリ ページをハード ドライブとの間で頻繁にスワップする必要があります。この動作は一般的であり、急激な速度低下。そのようにメモリ使用量が拡大しないようにプログラムを書き直してみてください。未使用のデータは削除するか、ファイルに書き込むようにデータを管理してください。

または、他の何か...

お役に立てれば。

于 2013-01-12T21:46:34.583 に答える