1

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

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 秒。

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

请帮忙!谢谢。

4

1 回答 1

2

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

另见 C `clock()` 函数只返回一个零

于 2015-08-21T03:43:00.347 回答