関数ファイルとスクリプトファイルの実行時間の違いについて
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
gafakel
am 28 Jun. 2022
Kommentiert: gafakel
am 8 Jul. 2022
使用しているコードが諸般の事情から載せられず大変申し訳ないのですが、以下のように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 Kommentare
Akzeptierte Antwort
Hernia Baby
am 28 Jun. 2022
Bearbeitet: Hernia Baby
am 28 Jun. 2022
4 Kommentare
Hernia Baby
am 29 Jun. 2022
前に進めそうでよかったです。
もし意図とマッチしていましたらご活用ください。
------------------------------------------------------------------------------------------------
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!