call function - slow
显示 更早的评论
Dear users, I am struggling with optimizing the code for a project of mine and I am following the suggested practice of breaking my code in small parts with separate functions. However when I do this I get a significant loss in execution speed. Please consider the following two examples:
A)
function y = fun1(a,params)
%params is structure with several variables
b = a*2;
y = b+1;
end %end fun1
compared to
B)
function y = fun1(a,params)
%params is structure with several variables
b = fun2(a,params);
y = b+1;
end %end fun1
function b = fun2(a,params)
b = a*2;
end %end fun2
(B) is easier to maintain but for my application is 20/30% slower. (Of course the example above is a toy example). One reason could be that I have to pass to fun2 "params" which is a big structure. But using globals would be even worse, are there any other (fast) ways? Thanks!
3 个评论
KALYAN ACHARJYA
2018-9-18
编辑:KALYAN ACHARJYA
2018-9-18
Have you checked the time by doing nesting of functions? Here fun1 call the other function.
If params is not modified by fun2, then passing it to fun2 is just a pointer copy (8 bytes) regardless of the size of params, and so will not cause any noticeable slowdown. If params does get modified in fun2, then you will incur a copy of the whole content which could take some time if it's big.
I think you need to get into more details of what actually happens in your fun2.
Alessandro D
2018-9-18
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!