网上发布了一些关于“终结”问题的文章。 for循环语句需要很长时间。
我的代码中存在同样的问题。这就是为什么我用两个简单的函数(' start'和#39; callMe')编写这个示例代码,以使问题清晰明白。
我有两个案例来检查时间长度' callMe'需要:
案例1:功能' callMe'必须计算' testOnly = testOnly + i' 10000000次迭代。 ' testOnly = testOnly + i'代码行需要48.3%的总时间 '结束' for循环语句需要49.7%
案例2:功能' callMe'显示字符串'想知道'在命令窗口中。 线路'对于i = 1:1000'需要99.6%的总时间,并且结束时间为'声明不需要时间!
当然我知道10000000计算比显示字符串花费更少的时间。但是,我不是在谈论荒谬的时代。我想知道为什么'结束' Case1中的陈述占49.7%。它与“#”的简单数学计算有关。 testOnly = testOnly + i'。 我已经检查了“callMe”的消费时间。还有tic / toc在' start'功能和那些时间对应于' callMe'。
中的总时间在我的实际应用程序中,我使用了更加困难的代码。此代码对时间敏感,因为我尝试获得近乎实时的解决方案。我们正在讨论Parallel Toolbox,CUDA,indisde GPU命令等来加速代码,但另一方面,这样简单的For / end time问题具有所有优势。
那么如何避免这种一般性的结束'问题
% Case 1:---------------------
function start()
tic
for i=1:10000
callMe(1);
end
toc
end
function callMe(testOnly)
for i=1:1000
testOnly = testOnly + i; % Case 1
%disp('wondering') % Case 2
end
%disp(testOnly)
end
% Case 2:------------------
function start()
tic
for i=1:10000
callMe(1);
end
toc
end
function callMe(testOnly)
for i=1:1000
%testOnly = testOnly + i; % Case 1
disp('wondering') % Case 2
end
%disp(testOnly)
end