weichuang02 发表于 2013-05-26 09:25

为什么time命令得到的结果,总时间不等于sys时间+user时间?

如题,我写了个很小的程序(m.cpp),来耗费cpu:
#include<stdio.h>
int main(void){
        int j;
        for(int i=0;i<100000000;++i){
                j+=i;
        }
        printf("%d\n",j);
        return 0;
}
然后编译运行
# g++ m.cpp
# time ./a.out
1021973595

real        0m1.293s
user        0m0.628s
sys        0m0.119s

为什么real不等于user+sys呢? 1.293-0.628-0.119=0.546
剩下的0.546s时间作了什么?

谢谢。

MMMIX 发表于 2013-05-26 09:25

weichuang02 发表于 2013-05-26 18:27 static/image/common/back.gif
可是这个printf总不会阻塞0.5s多吧?
谢谢。

不一定是阻塞,此进程被调度出执行列表之后的时间(此时该进程没有运行)也算在 time 给出的总时间里面。

linux_c_py_php 发表于 2013-05-26 11:46

因为CPU时间是说进程使用CPU的时间,如果某个API挂起阻塞了一会,那么这个时间不算在任何一个CPU时间里,只会累计到实际运行时间上去。

weichuang02 发表于 2013-05-26 18:27

linux_c_py_php 发表于 2013-05-26 11:46 static/image/common/back.gif
因为CPU时间是说进程使用CPU的时间,如果某个API挂起阻塞了一会,那么这个时间不算在任何一个CPU时间里,只 ...

可是这个printf总不会阻塞0.5s多吧?
谢谢。

linux_c_py_php 发表于 2013-05-28 11:30

weichuang02 发表于 2013-05-26 18:27 static/image/common/back.gif
可是这个printf总不会阻塞0.5s多吧?
谢谢。

操作系统可能把进程调度了, 导致进程有一段时间没有使用CPU进行运算.
页: [1]
查看完整版本: 为什么time命令得到的结果,总时间不等于sys时间+user时间?