“我怎么能?”;简介;只是MATLAB中的my.m函数??
我有一个相对较大的代码,我想使用“配置文件”来改进它。当我使用“profile”时,我得到一个报告,列出了所有函数(内置函数和my.m函数)及其各自的运行时间 我只想列出我自己编写的函数(不是内置函数)及其各自的运行时间。有人知道怎么做吗“我怎么能?”;简介;只是MATLAB中的my.m函数??,matlab,profile,Matlab,Profile,我有一个相对较大的代码,我想使用“配置文件”来改进它。当我使用“profile”时,我得到一个报告,列出了所有函数(内置函数和my.m函数)及其各自的运行时间 我只想列出我自己编写的函数(不是内置函数)及其各自的运行时间。有人知道怎么做吗 提前感谢。您是否正在查看个人资料摘要?如果是这样,那么会有一列列出每个函数(包括您自己的函数)的总时间和自我时间。我认为自我时间可能是你正在寻找的时间。此外,您还可以单击最左边一列中的函数名,查看代码中花费时间的详细信息。确保选中“显示函数列表”框并刷新以查看
提前感谢。您是否正在查看个人资料摘要?如果是这样,那么会有一列列出每个函数(包括您自己的函数)的总时间和自我时间。我认为自我时间可能是你正在寻找的时间。此外,您还可以单击最左边一列中的函数名,查看代码中花费时间的详细信息。确保选中“显示函数列表”框并刷新以查看代码每行的计时详细信息。我希望这能有所帮助。这里是一个尝试,使用函数的
'info'
参数。通过将Matlab函数的完整路径名与matlabroot
进行比较,我放弃了Matlab函数。代码如下:
profile on
... % Put the code to profile here
% Stop the profiler and get infos
stats = profile('info');
% Sort results based on the total execution time
[~,I] = sort([stats.FunctionTable.TotalTime], 'descend');
for i = I
% Get file structure
F = stats.FunctionTable(i);
% Discard Matlab functions
if ~isempty(findstr(F.CompleteName, matlabroot))
continue;
end
% Display the total execution time and the function name
fprintf('%.06f sec\t', F.TotalTime);
fprintf('%s\n', F.FunctionName);
end
尽管探查器提供了一个看起来更好的表示,但这确实完成了您开始要做的事情
NB:起初我认为我可以使用函数的输出,但只有一部分Matlab函数的核心子集被标记为“内置”。例如,repmat
和verLessThan
具有与自定义函数相同的标志,因此不被视为内置函数
最好的