我编写了一些C代码,在使用MEX进行编译之后,我将其称为MATLAB。在C代码内部,我使用以下代码测量一部分计算的时间:
clock_t begin, end;
double time_elapsed;
begin = clock();
/* do stuff... */
end = clock();
time_elapsed = (double) ((double) (end - begin) / (double) CLOCKS_PER_SEC);
耗时应为执行时间(以秒为单位)。
然后,我将
time_elapsed
值输出到MATLAB(已正确导出;已检查)。然后在MATLAB端,我将此函数称为C函数(在使用MEX进行编译之后),并使用tic
和toc
衡量其执行时间。完全荒谬的是,我使用tic和toc计算的时间是0.0011s(500次运行的平均值,st。dev。1.4e-4),而C代码返回的时间是0.037s(平均500次运行,标准偏差0.0016)。在这里,您可能会注意到两个非常奇怪的事实:
这些计时器是怎么回事?
最佳答案
您正在将苹果与橙子进行比较。
查看Matlab的文档:
tic-http://www.mathworks.com/help/matlab/ref/tic.html
toc-http://www.mathworks.com/help/matlab/ref/toc.html
tic和toc可让您测量实际耗时。
现在看一下时钟函数http://linux.die.net/man/3/clock。
特别是,
那么,什么可以解释您的差异:
那么该怎么做...对于初学者,将苹果与苹果进行比较!接下来,确保您考虑了计时器分辨率。