Can MATLAB save the Profiler results table (Function Name, Calls, etc.) to a text file or a spreadsheet?
Show older comments
Can MATLAB save the Profiler results table (Function Name, Calls, Total Time, Self Time) to a text file or a spreadsheet?
I need this to merge and compare Profiler results from different software versions.
15 Comments
Ive J
on 21 Feb 2022
You can use profile('info'), and then write what you need to a file. profsave also can save it to an HTML doc.
Leigh Sneddon
on 21 Feb 2022
Leigh Sneddon
on 21 Feb 2022
Ive J
on 21 Feb 2022
I guess you can do something like this
profile on
% your code
info = profile('info');
profile viewer % to compare
infotab = struct2table(info.FunctionTable);
infotabMain = infotab(:, ["FunctionName", "NumCalls", "TotalTime"]); % main table in profile viewer
infotabExc = cell(height(infotab), 1); % execution time per each subfunction
for i = 1:height(infotab)
infotabExc{i} = infotab.ExecutedLines{i};
infotabExc{i} = array2table(infotabExc{i}, ...
'VariableNames', {'Line Number', 'Calls', 'Total time(s)'});
end
Leigh Sneddon
on 21 Feb 2022
Ive J
on 21 Feb 2022
Can you upload info?
Leigh Sneddon
on 21 Feb 2022
Leigh Sneddon
on 21 Feb 2022
I get no error:
info = load("info.mat").info;
infotab = struct2table(info.FunctionTable);
infotabMain = infotab(:, ["FunctionName", "NumCalls", "TotalTime", "TotalRecursiveTime"]); % main table in profile viewer
infotabExc = cell(height(infotab), 1); % execution time per each subfunction
for i = 1:height(infotab)
infotabExc{i} = infotab.ExecutedLines{i};
infotabExc{i} = array2table(infotabExc{i}, ...
'VariableNames', {'Line Number', 'Calls', 'Total time(s)'});
end
% show me what you got
head(infotabMain)
size(infotabExc)
head(infotabExc{1})
Leigh Sneddon
on 22 Feb 2022
Leigh Sneddon
on 22 Feb 2022
Ooops, my bad!
What about this?
info = load("info.mat").info;
infotab = struct2table(info.FunctionTable);
keepCol = ismember(infotab.Properties.VariableNames, ["FunctionName", "NumCalls", "TotalTime", "TotalRecursiveTime"]);
infotabMain = infotab(:, keepCol); % main table in profile viewer
infotabExc = cell(height(infotab), 1); % execution time per each subfunction
for i = 1:height(infotab)
infotabExc{i} = infotab.ExecutedLines{i};
infotabExc{i} = array2table(infotabExc{i}, ...
'VariableNames', {'Line Number', 'Calls', 'Total time(s)'});
end
% show me what you got
head(infotabMain)
Leigh Sneddon
on 22 Feb 2022
Leigh Sneddon
on 28 Feb 2022
Ive J
on 1 Mar 2022
Posted as an answer. Thanks!
Accepted Answer
More Answers (2)
Sulaymon Eshkabilov
on 21 Feb 2022
Edited: Sulaymon Eshkabilov
on 21 Feb 2022
Yes, it can be done realtively easy with profsave(profile()), e.g.:
profile on
x = linspace(0, 1, 2e3);
y = sin(2*pi*t)+randn(size(x));
plot(x,y), grid on
profile off
% All html files are saved in your current directory and inside a folder called: MY_Profile_results
profsave(profile('info'),'MY_Profile_Results')
1 Comment
Leigh Sneddon
on 21 Feb 2022
Sulaymon Eshkabilov
on 21 Feb 2022
0 votes
You can try this fcn - extracthmltext() to extract the data from html formatted file:
https://www.mathworks.com/help/textanalytics/ref/htmltree.extracthtmltext.html
1 Comment
Leigh Sneddon
on 22 Feb 2022
Categories
Find more on Spreadsheets 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!