call function - slow
    10 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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 件のコメント
  Guillaume
      
      
 2018 年 9 月 18 日
				
      編集済み: Guillaume
      
      
 2018 年 9 月 18 日
  
			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.
採用された回答
  Sambit Senapati
    
 2018 年 9 月 21 日
        Please go through the this link which describes about performance of different types of function calls. This may help you to figure out why your code is slow.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
				Help Center および 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!

