我想找出另一个程序运行所花费的时间;
我正在使用以下代码;

system("time ./a.out > garb");


它给出了非常奇怪的输出。

#include <stdio.h>

int main()
{

        long int i;

        for ( i = 0; i < 10000000; i++ ) {
                printf("Hello World!\n");
        }
        printf("C Program\n");
        return 0;
}


输出

0.31user 0.10system 0:00.41elapsed 99%CPU (0avgtext+0avgdata 1744maxresident)k
0inputs+253912outputs (0major+149minor)pagefaults 0swaps

最佳答案

一种方法是使用wait3wait4函数(如果系统中可用)。

pid_t wait3(int *status, int options, struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);


退出子进程后,您的程序将获得子进程的资源使用情况。

struct rusage的所有字段都不会更新,但是前两个字段会告诉您所需的内容:

struct rusage {
    struct timeval ru_utime; /* user CPU time used */
    struct timeval ru_stime; /* system CPU time used */
    ...


ru_utimeru_stime的总和是子进程使用的总CPU时间。

使用wait3 / wait4并不像调用system()函数那么简单。

编辑:
通过将time打印输出的这两个值相加,应该得到相同的结果:


  0.31用户0.10系统

关于c++ - 如何找到其他C程序的运行时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11410345/

10-11 22:04
查看更多