長い MATLAB コード内でユーザーが作成したすべての関数とスクリプトを追跡しようとしています。次のコードはこれを行いますが、MATLAB のプロファイラーの既定の履歴サイズが 1,000,000 であるため、かなりの量の関数が不足しています。
function endProfile(p)
profile off
diary('Diary_endProfile')
for k = 1:size(p.FunctionHistory, 2)
if p.FunctionHistory(1, k) == 0
str = 'entering function: ';
else
str = 'exiting function: ';
end
if isempty(strfind(p.FunctionTable(p.FunctionHistory(2,k)).FileName, 'C:\Program Files\MATLAB\')) &&...
~strcmp(p.FunctionTable(p.FunctionHistory(2, k)).FileName, '')
disp([str p.FunctionTable(p.FunctionHistory(2, k)).FunctionName])
end
end
profile off
profile viewer
end
分析中のコードの最初のスクリプトから次のコードを使用して、プロファイラーを初期化します。
profile clear
profile on -history -historysize 1000000000
前の関数は、最初のスクリプトの最後で次のように呼び出されます。
endProfile(profile('info'))
最大履歴サイズが何であるか、および/またはサイズを増やす別の方法があるかどうかを知っている人はいますか?
ありがとう!