関数ファイルとスクリプトファイルの実行時間の違いについて
1 view (last 30 days)
Show older comments
使用しているコードが諸般の事情から載せられず大変申し訳ないのですが、以下のように2つのプログラムがあるとします。
- ただただ、処理が初めから最後まで書かれているスクリプトA
- スクリプトAについて、先頭行に"function"、最終行に"end"を付け足して関数化した関数A'
なお、関数A'は返り値としてテーブル型変数Bを出力しますが、スクリプトAでは実行の一番最後で全く同一のテーブル型変数Bを出力します。
ここで、これらA,A'のmファイルでは実行時間の計測のためにtic/toc関数を用いているのですが、スクリプトAは処理が1時間程度で終わるのに対し、関数A'では6時間程度かかります。プログラム内で(必要不可欠な)forループを回す回数も一緒、使用している変数やその値もすべて一緒、と「プログラム・処理は全く一緒」なのに、なぜこのような大きな差が生まれるのでしょうか?以前、下記の質問を拝見して「関数化すると処理が高速化出来うる」と知ったためにやってみたのですが……。
ちなみに、書くとすると(何も中身がありませんが)こういう感じでしょうか。
スクリプトA:
tBegin=tic;
%%%%%何らかの処理%%%%%
B=table(tBegin);
toc(tBegin);
% ->ここで1時間ほど(3000sec程度)が結果として出力される
関数A':
function outP=funA()
tBegin=tic;
%%%%%何らかの処理%%%%%
B=table(tBegin);
outP=B;
toc(tBegin);
end
% ->実行すると6時間ほど(20000sec程度)が結果として出力される
具体的な原因究明のための足掛かりが提示できず大変恐縮ですが、何かお考えがあればご教示いただけますと幸いです。よろしくお願いいたします。
0 Comments
Accepted Answer
More Answers (0)
See Also
Categories
Find more on ループと条件付きステートメント in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!