当前位置: 技术问答>linux和unix
我用什么方法计算我的程序运行了多久呢?
来源: 互联网 发布时间:2015-10-19
本文导语: 我知道有个clock函数,他是计算程序占用CPU的时间,如果我要晓得他从我命令行开始,到他执行结束的时间呢?怎么做? 还有,我怎么让一件指定的事情由最后一个进程来做呢?我不知道谁会是最后执行的进程啊 我...
我知道有个clock函数,他是计算程序占用CPU的时间,如果我要晓得他从我命令行开始,到他执行结束的时间呢?怎么做?
还有,我怎么让一件指定的事情由最后一个进程来做呢?我不知道谁会是最后执行的进程啊
我是用循环来fork出100个进程的,不晓得哪个最后执行:(
高手帮忙啊!
还有,我怎么让一件指定的事情由最后一个进程来做呢?我不知道谁会是最后执行的进程啊
我是用循环来fork出100个进程的,不晓得哪个最后执行:(
高手帮忙啊!
|
调用gettimeofday()函数来确定时间吧。
用一个数组保存退出的进程编号,排序或者怎么做都可以啊。发信号通知父进程吧。
用一个数组保存退出的进程编号,排序或者怎么做都可以啊。发信号通知父进程吧。
|
可以参考一下用 times函数,
#include
clock_t times(struct tms *buf)
或者也可以参考一下getrusage函数,这要用到rusage结构,它的两个成员ru_utime和ru-stime保存进程累计花费的用户和系统CPU时间。
#include
#include
#include
int getrusage(int who, struct rusage *usage)
不知道有没有帮助
#include
clock_t times(struct tms *buf)
或者也可以参考一下getrusage函数,这要用到rusage结构,它的两个成员ru_utime和ru-stime保存进程累计花费的用户和系统CPU时间。
#include
#include
#include
int getrusage(int who, struct rusage *usage)
不知道有没有帮助
|
当运行时间较长时,time()函数返回值会溢出,clock()也一样,32位系统不能超过72分钟
而用getrusage()是正确的,返回值以秒为单位,精确到微秒
以前也为这个事花了些时间,gettimeofday之类,求出的只是所谓的墙上时间,当进程一直独占CPU时,结果是对的,多任务时,每次的求出的时间都会随系统内进程的不同而变化
而用getrusage()是正确的,返回值以秒为单位,精确到微秒
以前也为这个事花了些时间,gettimeofday之类,求出的只是所谓的墙上时间,当进程一直独占CPU时,结果是对的,多任务时,每次的求出的时间都会随系统内进程的不同而变化
|
这个问题我今天刚搞定,我用两天多的时间才搞定的。
我这些都是从 /proc里面得出来的,就是最原始的信息。
首先有三个时间应该清楚:1) 系统开始时间,2)进程开始时间(从系统开始以后,采用jiffies),3)现在时间
程序运行了多少时间为:现在时间-系统开始时间-进程开始时间。
现在时间很好求,
系统开始时间在/proc/stat里面,有一个btime项。
进程开始时间在/proc/进程号/stat,第二十二项为进程开始时间,它用jiffies表示,所以单位为0.01秒(正常情况)。
我这些都是从 /proc里面得出来的,就是最原始的信息。
首先有三个时间应该清楚:1) 系统开始时间,2)进程开始时间(从系统开始以后,采用jiffies),3)现在时间
程序运行了多少时间为:现在时间-系统开始时间-进程开始时间。
现在时间很好求,
系统开始时间在/proc/stat里面,有一个btime项。
进程开始时间在/proc/进程号/stat,第二十二项为进程开始时间,它用jiffies表示,所以单位为0.01秒(正常情况)。
|
int begin,over,alltime;
begin= time((time_t*)NULL);
...
your function
...
over= time((time_t*)NULL);
alltime = over - begin; //the runtime
begin= time((time_t*)NULL);
...
your function
...
over= time((time_t*)NULL);
alltime = over - begin; //the runtime
|
it can be done by the shell command
for example, u writes a program called myprogm
then u can type
time ./myprogm
the program can run as normal, and the shell will display the run time of the program.
maybe it can not solve your problem, because i don't know how to evaluate the time the c programming. i think time.h will be helpful to u.
for example, u writes a program called myprogm
then u can type
time ./myprogm
the program can run as normal, and the shell will display the run time of the program.
maybe it can not solve your problem, because i don't know how to evaluate the time the c programming. i think time.h will be helpful to u.
|
怎么会不知道哪个是最后的fork呢
举个例子
for (i = 0; i
举个例子
for (i = 0; i