1

を使用すると、異なるパフォーマンス結果が得られるようですeigs。同じマトリックスで、呼び出し
[c, v] = eigs(A, 2, 'sm'); には 30 秒、場合によっては 2 秒かかります。 時間を報告する必要があるため、同じマトリックスでの
後続の呼び出しでキャッシュを使用してスピードアップがあるかどうかを知る必要があります...eigs

4

2 に答える 2

1

もしそうなら、これは一般的な機能ではないようです。このテストはコマンドラインから実行しました

A = randn(10000); 
B = randn(10000); 
C = B; 
tic; [c1,v1] = eigs(A,2,'sm'); toc; 
tic; [c2,v2] = eigs(A,2,'sm'); toc; 
tic; [c3,v3] = eigs(B,2,'sm'); toc; 
tic; [c4,v4] = eigs(C,2,'sm'); toc

そしてこの結果を得ました

経過時間は32.373128秒です。

経過時間は28.412905秒です。

経過時間は32.752616秒です。

経過時間は29.024055秒です。

通常、MATLABはユーザーの裏をかくことを試み、結果を保存して再利用するため、驚いています。

于 2012-05-22T16:56:40.360 に答える
0

状況によっては、使用可能な連続RAMのブロックが十分に大きいかどうかに応じて、十分な大きさのマトリックスが仮想メモリに物をプッシュする場合としない場合があります。または、あなたは側で何かをしているかもしれません。

テストを行うときにプロセスモニターを監視することで、何が起こっているかを確認できます。突然大量のディスクアクセスがありますか?もしそうなら、仮想メモリが触れられています。CPUを占有している別の無関係なプロセスがアクティブになっていますか?

于 2012-05-22T18:01:50.397 に答える