tcsh时间和makefile时间明显不同

时间:2015-07-03 20:34:46

标签: c linux pthreads openmp tcsh

我在make和终端中运行time时看到了不同的行为。我正在使用OpenMP和pthread(单独)编译多线程程序并对它们进行计时,以便将它们的加速比与程序的顺序版本进行比较。但是,当我在终端上运行time a.out时,每个程序都会得到60秒以上,但在makefile中,两者都会少于10秒。此外,终端时间计算返回时间不到60秒,所以我觉得它对我说谎。

这会导致什么?我原本以为make和终端使用不同的time功能,但显然我没有/usr/bin/time。 make有内置time还是什么?

编辑:是的,我知道time中的用户和系统受线程数影响,可能大于实际,并且内置了time我的问题是:为什么从不同的地方运行相同的东西(终端和同一会话中的make)导致返回的时间有显着差异?两个时间输出彼此不是很近。

1 个答案:

答案 0 :(得分:2)

几乎所有炮弹都有内置时间。我不知道你怎么称呼时间,但你可能需要根据shell来解释它的结果。

我用4个线程的程序做了一个实验,这个程序浪费了一些时间:

$ cc -o foo foo.c && time ./foo

real    0m5.258s
user    0m18.805s
sys 0m0.061s
$ tcsh
% time ./foo
18.978u 0.062s 0:05.30 359.0%   0+0k 0+0io 0pf+0w

tcsh首先报告用户时间,然后报告系统时间,然后报告实时。 Bash报告实时,用户时间,然后是系统时间。那些意味着不同的东西实时是#34;挂钟"时间,如果你用秒表测量它已经过了多少时间。用户时间是您在userland中运行代码时使用的cpu时间,这是您使用过的所有cpu的总和。