C语言中有没有用于计时的函数?怎么用?

作者&投稿:召败 (若有异议请与网页底部的电邮联系)
c语言中怎么设置计时器?~

#include   
#include     
using namespace std;  
int main()  
{  
clock_t start = clock();    
//do some process here    
clock_t end = (clock() - start)/CLOCKS_PER_SEC;  
cout<<"time comsumption is "<<end<<endl;  
}

扩展资料
使用linux的系统设置计时器
#include   
int main()  
{  
timeval starttime,endtime;  
gettimeofday(&starttime,0);    
//do some process here    
gettimeofday(&endtime,0);  
double timeuse = 1000000*(endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - startime.tv_usec;  
timeuse /=1000;//除以1000则进行毫秒计时,如果除以1000000则进行秒级别计时,如果除以1则进行微妙级别计时  
}    
timeval的结构如下:  
strut timeval  
{  
long tv_sec; /* 秒数 */  
long tv_usec; /* 微秒数 */  
};

C语言中提供了许多库函数来实现计时功能
下面介绍一些常用的计时函数
1. time()
头文件:time.h
函数原型:time_t time(time_t * timer)
功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的时此刻所经过的秒数
用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。
用difftime函数可以计算两个time_t类型的时间的差值,可以用于计时。用difftime(t2,t1)要比t2-t1更准确,因为C标准中并没有规定time_t的单位一定是秒,而difftime会根据机器进行转换,更可靠。
说明:C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。
2. clock()
头文件:time.h
函数原型:clock_t clock(void);
功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。
说明:可以精确到毫秒,适合一般场合的使用。
3. timeGetTime()
头文件:Mmsystem.h 引用库: Winmm.lib
函数原型:DWORD timeGetTime(VOID);
功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。
说明:该函数的时间精度是五毫秒或更大一些,这取决于机器的性能。可用timeBeginPeriod和timeEndPeriod函数提高timeGetTime函数的精度。如果使用了,连续调用timeGetTime函数,一系列返回值的差异由timeBeginPeriod和timeEndPeriod决定。
4. GetTickCount()
头文件:windows.h
函数原型:DWORD WINAPI GetTickCount(void);
功能:返回自设备启动后的毫秒数(不含系统暂停时间)。
说明:精确到毫秒。对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求。
5. QueryPerformanceCounter()、QueryPerformanceFrequency()
头文件:windows.h
函数原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
功能:前者获得的是CPU从开机以来执行的时钟周期数。后者用于获得你的机器一秒钟执行多少次,就是你的时钟周期。
补充:LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定:
在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。
说明:这种方法的定时误差不超过1微秒,精度与CPU等机器配置有关,一般认为精度为透微秒级。在Windows平台下进行高精度计时的时候可以考虑这种方法。
6. gettimeofday()
Linux C函数。
头文件:sys/time.h
函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。
timeval的定义为:
struct timeval {
  long tv_sec; // 秒数
  long tv_usec; //微秒数
}
可见该函数可用于在linux中获得微秒精度的时间。
说明:使用这种方式计时,精度可达微秒。经验证,在arm+linux的环境下此函数仍可使用。

CLOCK()函数:
clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t
clock(void)
;
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock
tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:
#ifndef
_CLOCK_T_DEFINED
typedef
long
clock_t;
#define
_CLOCK_T_DEFINED
#endif
很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define
CLOCKS_PER_SEC
((clock_t)1000)
可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:
void
elapsed_time()
{
printf("Elapsed
time:%u
secs.\n",clock()/CLOCKS_PER_SEC);
}
当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
int
main(void)
{
long
i
=
10000000L;
clock_t
start,
finish;
double
duration;
/*
测量一个事件持续的时间*/
printf(
"Time
to
do
%ld
empty
loops
is
",
i)
;
start
=
clock();
while(
i--
);
finish
=
clock();
duration
=
(double)(finish
-
start)
/
CLOCKS_PER_SEC;
printf(
"%f
seconds\n",
duration
);
system("pause");
}
在笔者的机器上,运行结果如下:
Time
to
do
10000000
empty
loops
is
0.03000
seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。
time_t
time(
time_t
*timer
);
返回值是1970年到现在的秒数
用long型接就可以了
参数也是同样意义

long
time_s
=
0;
time_s
=
time(
NULL
);
//
time_s就是1970年到现在的秒数
或者
long
*
time_s
=
NULL;
time(time_s);
//
*time_s就是1970年到现在的秒数
要计算前后一段时间的话之前取一次time,之后取一次相减就知道用了多少秒了


第八课的一中的地道战这篇课文里有几个四字词语?
释义:穷:完。没有止境,没有限度。出处:宋·晏殊《踏莎行》:“无穷无尽是离愁。”白话译文:没有止境的是离别的愁苦。成语的定义:成语是汉语中经过长期使用、锤炼而形成的固定短语,它是比词的含义更丰富而语法功能又相当于词的语言单位,而且富有深刻的思想内涵,简短精辟易记易用。并常常附带有...

各地经典方言土话有哪些?
在实际操作中,个别语言之所以为“方言”,通常是由于以下的原因:缺少适当的书面语,语言未达到准确描述的程度;语言使用者没有属于自己的国家; 同一民族(或国家)拥有多个语言系统。以下对语言学者几种比较常用的“方言与语言比较”的判别方式进行讨论,并进一步指出这些判准在实际应用上的困难。在一些情况...

有关语言字词的一些问题
“以致”,有“因而造成”“致使”的意思,表示由于前面所说的原因而造成某种结果,多指不良结果或者不希望出现的结局。3、无“曝十寒”一词。“一暴十寒”同“一曝十寒”。一暴十寒原意是指即使是最容易生长的植物,晒一天,冻十天,也不可能生长。用于比喻学习或工作一时勤奋,一时又懒散,没有恒心...

语言和文字的出现,在人类传播史和文明史上具有怎样的
一个十分有力的推论是:前者没有语言,而后者创造了语言。语言拯救和帮助了克罗马农人,人类也从此脱离了动物的信号传播藩篱,踏上了人类的语言传播大道。第一次传播革命中的语言传播,其产生过程也许是漫长而“煞费苦心”的,但一经出现便因其具有简便易行、内蕴丰富的特点而倍受青睐,因为,它可以使个人经验和见闻为...

c语言中scanf和printf都是输出函数,两者有什么区别呢
两者完全不同,scanf是输入函数,printf是输出函数,所以会经常同时出现。两者也没有可比性,需要弄清他们的概念。1.scanf()是C语言中的一个输入函数。函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。比如...

在欧洲的语言里有没有没有阴阳之分的语言
据我所知德语是有阴阳之分的,而且还多一个中性。俺学过一年德语,被摧残了。我能很肯定的说芬兰语是没有阴阳之分的语言,而且它和欧洲大部分语言差异较大,被认为是比较难学的语言之一。另外不太确定的是匈牙利语,爱沙尼亚语,估计这两种语言也无阴阳性词汇。

和其他语言相比,中文的语法有多简单?
首先,一直以来我都认为中文的语法特别的难。可是,最近我和一些学中文的日本人以及欧美人聊天,虽然他们认为中文的汉字和发音确实很难,但是中文的语法却非常的简单。同时,通过在互联网上考证,也有相当多的人赞同这种观点。原因是,中文不像其他语言,中文中根本没有词语的变形,无论什么情况下,每个词语...

与C语言课程设计案例精编的案例十一有类似的程序没?
与C语言课程设计案例精编的案例十一有类似的程序没? 要与那个很相像,只是稍微改动了一下!利用C语言知识,独立设计完成学生××管理系统,现在不要求是提问的那个了,具体要求如下:1、设计管理系统的具体内容。2、界面设计:显示欢迎信息... 要与那个很相像,只是稍微改动了一下!利用C语言知识,独立设计完成学生××管理...

易语言有没有滚动框组件?
1 使用扩展组件中的 滚动框 组件 2 使用基本祖建中的 滚动条\/滑块条 组件(可以用计次循环逐个移动

全世界有多少种有文字的语言?有没有人会所以的语言?
世界上有多少种有文字的语言?目前估计,全球大约有6909种语言。其中,大约2000种语言拥有自己的文字系统。不幸的是,有2500种语言正处于濒临消亡的状态。例如,中国的多种方言正面临着灭绝的威胁。有没有人会所有这些语言?实际上,科学家们甚至无法精确统计出世界上所有的语言。因此,要找到一个能够说...

蒙山县13133213267: C语言中有计时器功能的函数有哪些? -
钟离蚂忆林: 没有吧·~~ widows.h 里面提供了有.Sleep(),SetTimer()/OnTimer()

蒙山县13133213267: C语言中有没有一种计时函数,能算出从程序中某段代码运行所花的时间? -
钟离蚂忆林: 可以直接在函数的算法开始和结束处,加个打印语句,打印时间的,当然用gettimeofday()函数可以精确些 可参照 http://baike.baidu.com/view/1516611.htm 中clock()函数, 而 gettimeofday是linux系统下

蒙山县13133213267: C语言里面的时间函数怎么用? -
钟离蚂忆林: 函数名: difftime 功 能: 计算两个时刻之间的时间差 用 法: double difftime(time_t time2, time_t time1); 程序例:include <time.h>

蒙山县13133213267: c语言中有没有函数可以计时,比如我定义一个数组给它赋初值,把值打印出来,等到十秒后,自动让数组等于 -
钟离蚂忆林: 如果10秒期间不需要该程序操作/执行别的指令,只需在10秒后变动数组的值以及输出,可以用sleep(int)函数,参数是休眠/等待的时间, 单位是秒.基本逻辑如下://定义赋值数组并打印 sleep(10);//修改数组值并打印数组的值并不是在休眠的10秒内而是在休眠后进行的,但由于指令执行的很快所以感觉不到两者的区别(数组巨大的另说). 如果程序在10秒期间还要处理别的指令,则需要创建一个线程,在线程中使用sleep(10);然后再在该线程中修改数组的值并输出,修改和输出数组值时需要考虑数据互斥,比较麻烦一点.

蒙山县13133213267: C语言中如何计算时间差 秒 -
钟离蚂忆林: C语言中有时间函数(time函数),可以打印出系统时间,相减就行.当然,也有各类延时函数.sleep族函数.

蒙山县13133213267: c语言倒计时怎么编? -
钟离蚂忆林: 1、C语言中实现精确计时,参考代码如下: ANSIC: ftime() struct timeb {time_t time;unsigned short millitm;short timezone;short dstflag;}; 2、另外,还有就是更精确定计时,需要CPU的支持,具体情况,可以参考MSDN. LARGE_INTEGER ...

蒙山县13133213267: C语言中有没有能显示系统日期和时间的函数?
钟离蚂忆林: 有,这是我以前做的一个小例子. #include<time.h> main() { time_t timep; struct tm *p; time (&timep); p=gmtime(&timep); printf("%d\n",p->tm_sec); /*获取当前秒*/ printf("%d\n",p->tm_min); /*获取当前分*/ printf("%d\n",8+p->tm_hour);...

蒙山县13133213267: c语言里面gettime函数如何调用 -
钟离蚂忆林: 使用C语言编写程序需要获得当前精确时间(1970年1月1日到现在的时间),或者为执行计时,可以使用gettimeofday()函数. 用 法: void gettime(struct time *timep);C语言函数 #include <sys/time.h> int gettimeofday(struct timeval*tv, ...

蒙山县13133213267: 如何在C语言中实现计时 -
钟离蚂忆林: 以前做那个停车场管理系统的时候,也是需要计时,因为要收费..好像就这么记得.每个上机的人,应该有一个结构体,在结构体里设个计时的变量,可以是个只有两个元素的数组.当然这样会很不方便了.(因为需要你自己输入上机时间,和下机时...

蒙山县13133213267: c语言设计的系统中怎么显示实时的时间,? -
钟离蚂忆林: 可以调用 time.h 里的时间函数显示 实时的时间. 例如: #include <stdio.h> #include <time.h>int main(){ time_t t; struct tm * timeinfo; time(&t); timeinfo = localtime ( &t ); printf ( "The current date/time is: %s", asctime (timeinfo) );return 0; } 调用DOS date time 命令显示 日期和时间也可以: system("date /T"); system("time /T");

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网