多次执行的性能分析

时间:2014-02-12 01:53:27

标签: c unix

我正在尝试使用/ usr / bin / time命令对多个执行执行程序性能分析。当我运行它时,与其他执行相比,一些执行需要很长时间。

这是我的计划:

#include <stdio.h>
#define OUTPUTNAME "fprint.out"
main()
{
    long i;
    FILE *fp;

    if ((fp=fopen(OUTPUTNAME,"w")) == NULL) {
            fprintf(stderr,"Can't open %s.  Bye.\n",OUTPUTNAME);
            exit(1);
    }
    for (i=0; i<400000; i++) {  /* write 400,000 Xs with fprintf */
            if (fprintf(fp,"X") < 1) {
                    fprintf(stderr,"Can't write. Bye\n");
                    exit(1);
            }
    }
    fclose(fp);
    exit(0);
}

这是我输出的一部分:

real 0.03
user 0.00
sys 0.03

real 0.33
user 0.00
sys 0.02

real 0.02
user 0.00
sys 0.02

知道为什么会这样吗?我猜这是由与程序无关的东西引起的。

1 个答案:

答案 0 :(得分:2)

你猜对了。 “真实”时间有时也被称为墙上时间,时间就好像你正在看墙上的时钟(在这种特殊情况下非常准确)。

例如,如果您的流程在系统执行其他更重要的事情时关闭了十分钟,那么挂起时间将超过(您认为)应该是十分钟:

real 10m0.33 user 0.00 sys 0.02

如果您想衡量流程的CPU使用率,只需将sysuser加在一起。