我有一个运行循环的程序我希望有两个时间计数器,一个用于循环,它将告诉我循环的一次迭代是如何进行的,一个是整个程序的一次。据我所知tic
和toc
只能使用一次。
答案 0 :(得分:32)
你只熟悉这个tic toc语法:
tic; someCode; elapsed = toc;
但还有另一种语法:
start = tic; someCode; elapsed = toc(start);
第二种语法进行相同的时间测量,但允许您同时运行多个秒表计时器。您将tic的输出分配给变量tStart,然后在调用toc时使用该变量。 MATLAB测量tic及其相关toc命令之间经过的时间,并以秒为单位显示经过的时间。此语法使您可以计时多个并发操作,包括嵌套操作的时间(matlab documentation of tic toc)。
以下是如何在您的情况下使用它。让我们说这是你的代码:
for i = 1:M
someCode;
end
像这样插入tic和toc:
startLoop = tic;
for i = 1:N
startIteration = tic;
someCode;
endIteration = toc(startIteration);
end
endLoop = toc(startLoop);
您还可以使用上面的语法创建一个向量,其中第i个元素是第i次迭代的时间度量。像这样:
startLoop = tic;
for i = 1:N
startIteration(i) = tic;
someCode;
endIteration(i) = toc(startIteration(i));
end
endLoop = toc(startLoop);
答案 1 :(得分:2)
您可以使用tic和toc来计算嵌套操作的时间,从Matlab帮助中获取tic:
tStart=tic; any_statements; toc(tStart);
进行相同的时间测量,但允许您同时运行多个秒表计时器。您将tic的输出分配给变量tStart,然后在调用toc时使用该变量。 MATLAB测量tic及其相关toc命令之间经过的时间,并以秒为单位显示经过的时间。此语法使您可以计时多个并发操作,包括嵌套操作的时间
答案 2 :(得分:1)
我现在无法尝试此操作,但如果将tic
值存储到变量中,则应该能够使用多个toc
和tic
语句。
在此阅读Matlab's documentation,甚至还有关于嵌套它们的部分。这是一个粗略的例子:
tStartOverall = tic;
...
tStartLoop = tic;
<your loop code here>
tEndLoop = toc(tStartLoop);
...
tEndOverall = toc(tStartOverall);