使用 clock() 函数计算 C 中 system() 命令的运行时间

标签 c matlab system clock cpu-time

我正在尝试计算我的 C 程序中系统命令所花费的时间。 我正在尝试使用 C 中的 system() 函数从 C 中调用 MATLAB 例程。我想计算从调用 system() 时消耗了多少 cputime,MATLAB 运行、退出并将控制权返回给 C。我的伪代码片段如下:

void main()
{
    clock_t matlab_begin, matlab_end;
    matlab_begin = clock();

    system(/String for invoking MATLAB routine/);
    printf("MATLAB ENDED");

    matlab_end = clock();

    total_time_taken = (float)(matlab_end - matlab_begin)/CLOCKS_PER_SEC;
}

total_time_taken 的值为 0.03 秒。而当我使用 cputime 函数计算从 MATLAB 例程开始到 MATLAB 结束运行我的 MATLAB 脚本所花费的 cputime 时,我最终得到大约 11 秒。

我想知道为什么这两个运行时如此不同?此外,在 system() 命令之后的 print 语句不会执行,直到 MATLAB 完成其作业并退出并将控制权交还给系统命令。因此,理想情况下,两个运行时应该是相同的,但它们不是!

请帮忙! 谢谢。

最佳答案

我相信您的 C 代码中的 clock 调用只是为您的 C 程序获取时间。 system 调用正在启动另一个程序(在本例中为 Matlab)。当您从 C 程序中的 clock 获得结果时,您看不到任何 Matlab 的执行时间。这 0.03 秒正好是启动主程序、调用 clock 并启动 Matlab 所需的时间。

另见 The C `clock()` function just returns a zero

关于使用 clock() 函数计算 C 中 system() 命令的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32131975/

相关文章:

c# - MATLAB 与 Visual C++ 进行图像处理

mysql - 使用命令行添加系统环境Windows变量

C 参数传递和指针

对 Qsort 和指针感到困惑

c - sprintf 崩溃,但不清楚原因

c - System V——后进先出方式

c - 如何在 C 中将 system() 与 telnet 一起使用

c++ - 这个声明 "float (*x[20])(int *a)"是什么意思?

performance - 给定顶点时计算多面体的质心和体积

matlab - 我可以测量 matlab 中并行化的加速比吗?