【发布时间】:2013-06-17 02:28:06
【问题描述】:
根据其他函数的输出指定函数调用中的输入参数是否会影响性能? 峰值内存使用会受到影响吗? 如果我使用临时变量并在计算完每个中间步骤后清除它们会更好吗?
例如:
g=imfill(imclearborder(imdilate(Inp_img,strel('square',5))),'holes');
或
temp1=imdilate(Inp_img,strel('square',5));
temp1=imclearborder(temp1);
g=imfill(temp1,'holes');
clear temp1
就峰值内存使用率和速度而言,哪个更好?
【问题讨论】:
-
据我所知,使用函数调用只是使用被清除的隐藏临时变量。有人可能有一些更深入的知识。您可以尝试两种方法并使用
profiler来查找,如果有任何差异,请告诉我们! -
我希望这两种解决方案都同样占用内存,除非 JIT 区分这两种解决方案。此外,如果您打算重用
temp1,则应首选第二种方法(同样,除非 JIT '缓存'中间结果以供进一步计算)。如果您使用的是 Windows,请在打开任务管理器并检查内存使用情况下尝试这两种解决方案。
标签: matlab function optimization