Algorithm 两种方法之间的计算时间

Algorithm 两种方法之间的计算时间,algorithm,matlab,Algorithm,Matlab,假设我们有两种方法或算法。假设每一个的代码如下所示: 方法1: for i=0 to 100 print i end for 方法2: int x=0 w = x/2 print w 比较方法1和2的计算时间的最佳方法是什么? 我尝试使用Matlab代码: t= cputime; Method 1 e = cputime-t 但是我不确定这是否是比较这些方法性能的正确方法。使用timeit函数,从2013b开始,这是Matlab提供的,但是如果您使用的是旧版本,它可以在上获得

假设我们有两种方法或算法。假设每一个的代码如下所示:

方法1:

for i=0 to 100
 print i
 end for
方法2:

int x=0
 w = x/2
 print w
比较方法1和2的计算时间的最佳方法是什么? 我尝试使用Matlab代码:

t= cputime; 
 Method 1
 e = cputime-t

但是我不确定这是否是比较这些方法性能的正确方法。

使用
timeit
函数,从2013b开始,这是Matlab提供的,但是如果您使用的是旧版本,它可以在上获得。这将在计时之前为您正确地“预热”函数,并在内部循环中输出您的函数,并为您报告多次运行的中间时间


否则,传统的方法是在包含函数的循环周围使用
tic
toc

使用
timeit
函数,从2013b起,Matlab提供该函数,但如果您使用的是旧版本,则可在上使用。这将在计时之前为您正确地“预热”函数,并在内部循环中输出您的函数,并为您报告多次运行的中间时间


否则,传统的方法是在包含函数的循环周围使用
tic
toc

使用
timeit
函数,从2013b起,Matlab提供该函数,但如果您使用的是旧版本,则可在上使用。这将在计时之前为您正确地“预热”函数,并在内部循环中输出您的函数,并为您报告多次运行的中间时间


否则,传统的方法是在包含函数的循环周围使用
tic
toc

使用
timeit
函数,从2013b起,Matlab提供该函数,但如果您使用的是旧版本,则可在上使用。这将在计时之前为您正确地“预热”函数,并在内部循环中输出您的函数,并为您报告多次运行的中间时间

否则,传统方法是在包含函数的循环周围使用
tic
toc

请阅读完整信息

n = 1e4; %Higher number results in more accurate comparison
tic;
for t=1:n
  {method1}
end
toc;

tic;
for t=1:n
  {method2}
end
toc;
这将为您提供每次经过的时间。

请阅读完整信息

n = 1e4; %Higher number results in more accurate comparison
tic;
for t=1:n
  {method1}
end
toc;

tic;
for t=1:n
  {method2}
end
toc;
这将为您提供每次经过的时间。

请阅读完整信息

n = 1e4; %Higher number results in more accurate comparison
tic;
for t=1:n
  {method1}
end
toc;

tic;
for t=1:n
  {method2}
end
toc;
这将为您提供每次经过的时间。

请阅读完整信息

n = 1e4; %Higher number results in more accurate comparison
tic;
for t=1:n
  {method1}
end
toc;

tic;
for t=1:n
  {method2}
end
toc;


这会给你每次经过的时间。

我试过这个tic-toc;但是每次我运行同一个脚本时,它都会给出不同的值!我不认为这是一个稳健的方法!你说得对。有关这两个函数@Omar14的更多详细信息请注意,您应该在脚本执行多次时运行tic-toc,而不是一次。@DennisJaheruddin多次运行tic-toc和脚本是什么意思?!此外,为了比较两种方法,您还必须在大量迭代中运行包装这些方法的循环,以获得适当的运行时间;但是每次我运行同一个脚本时,它都会给出不同的值!我不认为这是一个稳健的方法!你说得对。有关这两个函数@Omar14的更多详细信息请注意,您应该在脚本执行多次时运行tic-toc,而不是一次。@DennisJaheruddin多次运行tic-toc和脚本是什么意思?!此外,为了比较两种方法,您还必须在大量迭代中运行包装这些方法的循环,以获得适当的运行时间;但是每次我运行同一个脚本时,它都会给出不同的值!我不认为这是一个稳健的方法!你说得对。有关这两个函数@Omar14的更多详细信息请注意,您应该在脚本执行多次时运行tic-toc,而不是一次。@DennisJaheruddin多次运行tic-toc和脚本是什么意思?!此外,为了比较两种方法,您还必须在大量迭代中运行包装这些方法的循环,以获得适当的运行时间;但是每次我运行同一个脚本时,它都会给出不同的值!我不认为这是一个稳健的方法!你说得对。有关这两个函数@Omar14的更多详细信息请注意,您应该在脚本执行多次时运行tic-toc,而不是一次。@DennisJaheruddin多次运行tic-toc和脚本是什么意思?!此外,要比较两种方法,您还必须在大量迭代中运行包装这些方法的循环,以获得适当的运行时间。请注意,对于非常短的计算时间,
timeit
所需的函数调用开销可能会干扰您的观察。(若要查看这是否与您相关,您可以尝试在函数中运行所有内容10次,然后检查时间是否以因数10递增)如果开销是一个问题,您需要在要测试的代码周围使用循环,您也可以切换到
tic-toc
@DennisJaheruddin
timeit
显式地对函数调用开销进行次数和补偿。它可能不能完美地做到这一点,但它至少会像您切换到
tic
toc
并补偿您自己一样做到这一点。事实上,
timeit
也补偿了调用
tic
toc
的开销。如果
timeit
仍然认为您测量的时间太短,它会告诉您。说明:根据文档,返回的是时间,而不是(通常被认为是“平均值”)。请注意,对于非常短的计算时间,
timeit
需要的函数调用开销可能会干扰您的观察。(为了查看这是否与您相关,您可以尝试将函数中的所有内容运行10次,并检查时间是否以因数10递增)如果开销是一个问题,您需要在要测试的代码周围使用循环,您也可以切换到