最近、MATLABコードのプロファイルを作成しましたが、頻繁に使用される関数で次のように表示されてショックを受けました。
5.76 198694 58 persistent CONSTANTS;
3.44 198694 59 if isempty(CONSTANTS) % initialize CONSTANTS
言い換えると、MATLABは198694年の関数呼び出しで約9秒を費やし、永続性を宣言し、CONSTANTS
初期化されているかどうかを確認しました。これは、その機能に費やされた合計時間の13%に相当します。
永続変数は、MATLABで実際にそれだけのパフォーマンスの低下をもたらしますか?それとも、ここでひどく間違ったことをしているのでしょうか。
アップデート
@Andrew私はあなたのサンプルスクリプトを試しましたが、出力に非常に困惑しています。
time calls line
6 function has_persistent
6.48 200000 7 persistent CONSTANTS
1.91 200000 8 if isempty(CONSTANTS)
9 CONSTANTS = 42;
10 end
私はbench()コマンドを試しましたが、サンプルマシンの中間範囲にあるマシンが表示されました。Intel(R)Core(TM)i7 CPU、4GBRAMでUbuntu64ビットを実行します。