【问题标题】:Calculate the runtime of system() command in C using clock() function使用clock()函数计算C中system()命令的运行时间
【发布时间】:2015-08-21 03:37:01
【问题描述】:

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

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() 命令之后的打印语句。因此,理想情况下,两个运行时应该是相同的,但它们不会!

请帮忙! 谢谢。

【问题讨论】:

    标签: c matlab system clock cpu-time


    【解决方案1】:

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

    另请参阅 The C `clock()` function just returns a zero

    【讨论】:

    • 感谢您的回复砖。那么,计算运行时间的理想方法应该是什么?我想查看经过的 CPU 时间。一种方法是检查 MATLAB 中的 cputime 并将其添加到使用 clock() 函数计算的 C 代码的其余 CPU 时间中。我正在调用 MATLAB,然后一旦它退出,我使用 C 对 MATLAB 输出进行后处理,我希望计算我的程序的总运行时间(MATLAB + C)。 MATLAB 的 cputime 函数是否与 C 中的 clock() 函数给出相同的结果,或者将它们都添加会做错事?谢谢。
    • @NMA 也许是time
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多