2014-02-12 52 views
1

我试图对多次执行使用/ 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 

任何想法,为什么发生这种情况?我猜这是由与节目无关的事情引起的。

回答

2

你猜对了。 “真实”时间有时也被称为“墙上时间”,就像您在墙上观看时钟一样(在这种情况下非常准确)。

如果,例如,你的进程十分钟切换出,同时系统也都更重要的东西,墙上的时间会超过十分钟以上(你认为)应该是:

real 10m0.33 user 0.00 sys 0.02 

如果你想测量你的进程的CPU使用率,只需加在一起sysuser

+0

谢谢!我在远程PC上运行它,所以我想这是因为有一些系统进程在那里运行。 – npn

+0

+ @npn:是的,你应该预料会有很多变化,但是不要在“CPU时间”中放太多库存,因为这个程序是IO限制的。除非将它打印到空设备上,否则fprintf(fp)将占总时间的90%到100%。 –