设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> 开源空间 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Linux Apache服务器系统…
Linux操作系统下如何配置…
在Linux系统下面架设Sen…
Linux系统Apache用户授权…
如何测试和调试Linux的A…
在Linux操作系统下如何开…
Linux系统下Apache服务器…
有备无患 Linux服务器备…
Ubuntu 6.10 Linux php+…
基于Linux操作系统实现的…
  Linux操作系统下C语言编程的时间概念           
Linux操作系统下C语言编程的时间概念
 

b>1、时间表示

在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果.这个时候我们可以使用下面两个函数

#include

time_t time(time_t *tloc);

char *ctime(const time_t *clock);

time函数返回从1970年1月1日0点以来的秒数.存储在time_t结构之中.不过这个函数的返回值对于我们来说没有什么实际意义.这个时候我们使用第二个函数将秒数转化为字符串. 这个函数的返回类型是固定的:一个可能值为. Thu Dec 7 14:58:59 2000 这个字符串的长度是固定的为26

2、时间的测量

有时候我们要计算程序执行的时间.比如我们要对算法进行时间分析。这个时候可以使用下面这个函数。

#include

int gettimeofday(struct timeval *tv,struct timezone *tz);

strut timeval {

long tv_sec; /* 秒数 */

long tv_usec; /* 微秒数 */

};

gettimeofday将时间保存在结构tv之中.tz一般我们使用NULL来代替。

#include #include #include

void function()

{

unsigned int i,j;

double y;

for(i=0;i<1000;i++)

for(j=0;j<1000;j++)

y=sin((double)i);

}

main()

{

struct timeval tpstart,tpend;

float timeuse;

gettimeofday(&tpstart,NULL);

function();

gettimeofday(&tpend,NULL);

timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+

tpend.tv_usec-tpstart.tv_usec;

timeuse/=1000000;

printf("Used Time:%f\n",timeuse);

exit(0);

}

这个程序输出函数的执行时间,我们可以使用这个来进行系统性能的测试,或者是函数算法的效率分析。

在我机器上的一个输出结果是: Used Time:0.556070

3、计时器的使用

Linux操作系统为每一个进程提供了3个内部间隔计时器。

ITIMER_REAL:减少实际时间.到时的时候发出SIGALRM信号。

ITIMER_VIRTUAL:减少有效时间(进程执行的时间).产生SIGVTALRM信号。

ITIMER_PROF:减少进程的有效时间和系统时间(为进程调度用的时间)。这个经常和上面一个使用用来计算系统内核时间和用户时间.产生SIGPROF信号。

具体的操作函数是:

#include

int getitimer(int which,struct itimerval *value);

int setitimer(int which,struct itimerval *newval,

struct itimerval *oldval);

struct itimerval {

struct timeval it_interval;

struct timeval it_value;

}

getitimer函数得到间隔计时器的时间值。保存在value中 setitimer函数设置间隔计时器的时间值为newval.并将旧值保存在oldval中。which表示使用三个计时器中的哪一个。itimerval结构中的it_value是减少的时间,当这个值为0的时候就发出相应的信号了. 然后设置为it_interval值。

#include

#include

#include

#include

#include

#define PROMPT "时间已经过去了两秒钟\n\a"

char *prompt=PROMPT;

unsigned int len;

void prompt_info(int signo)

{

write(STDERR_FILENO,prompt,len);

}

void init_sigaction(void)

{

struct sigaction act;

act.sa_handler=prompt_info;

act.sa_flags=0;

sigemptyset(&act.sa_mask);

sigaction(SIGPROF,&act,NULL);

}

void init_time()

{

struct itimerval value;

value.it_value.tv_sec=2;

value.it_value.tv_usec=0;

value.it_interval=value.it_value;

setitimer(ITIMER_PROF,&value,NULL);

}

int main()

{

len=strlen(prompt);

init_sigaction();

init_time();

while(1);

exit(0);

}

这个程序每执行两秒中之后会输出一个提示。

相关文章:

LINUX下C的编译

(T002)

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-3-31 2:11:19
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持