関数ファイルとスクリプトファイルの実行時間の違いについて
12 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
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!