为什么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时间作了什么?
谢谢。 weichuang02 发表于 2013-05-26 18:27 static/image/common/back.gif
可是这个printf总不会阻塞0.5s多吧?
谢谢。
不一定是阻塞,此进程被调度出执行列表之后的时间(此时该进程没有运行)也算在 time 给出的总时间里面。 因为CPU时间是说进程使用CPU的时间,如果某个API挂起阻塞了一会,那么这个时间不算在任何一个CPU时间里,只会累计到实际运行时间上去。 linux_c_py_php 发表于 2013-05-26 11:46 static/image/common/back.gif
因为CPU时间是说进程使用CPU的时间,如果某个API挂起阻塞了一会,那么这个时间不算在任何一个CPU时间里,只 ...
可是这个printf总不会阻塞0.5s多吧?
谢谢。 weichuang02 发表于 2013-05-26 18:27 static/image/common/back.gif
可是这个printf总不会阻塞0.5s多吧?
谢谢。
操作系统可能把进程调度了, 导致进程有一段时间没有使用CPU进行运算.
页:
[1]