c语言中怎么设置计时器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中怎么设置计时器?相关的知识,希望对你有一定的参考价值。
参考技术A C语言计时可以用很多方法。1.
如果是想使用秒级别的技术,可用使用C语言库<time.h>自带的clock()进行计时。如:
#include
<iostream>
#include
<time.h>
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;
以上方法只能用于秒级别的计时。
2.如果想使用毫秒级别的计时可以使用2种方法。一种是使用linux的系统库<sys/time.h>,一种是使用CUDA的cutil的库。
A.
如果使用linux的系统库,则可以使用如下方法:
#include
<sys/time.h>
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;
/*
微秒数
*/
;
上述方法可以进行微妙级别的计时,当然也可以进行毫秒和秒的计时。
B.
如果可以使用CUDA的话,则可以使用CUDA的sdk里面的cutil库里面的函数。
#include
<cutil.h>
int
main()
unsigned
int
timer
=
0;
cutCreatTimer(&timer);//创建计时器
cutStartTimer(&timer);//开始计时
//
do
some
process
here
cutStopTimer(&timer);//停止计时
cout<<"time
is
"<<cutGetTimerValue(&timer)<<endl;//打印时间
参考技术B 秒表计时器的代码
#include
#include
#include
#include
struct
tm
//定义时间结构体,包括时分秒和10毫秒
int
hours,minutes,seconds;
int
hscd;
time,tmp,total;
//time用以计时显示,tmp用以存储上一阶段时间,total记总时间
int
cnt;
file*
fout;
//每次调用update函数,相当于时间过了10ms
void
update(struct
tm
*t)
(*t).hscd++;
//10ms单位时间加1
cnt++;
if
((*t).hscd==100)
//计时满1s,进位
(*t).hscd=0;
(*t).seconds++;
if
((*t).seconds==60)
//计时满一分,进位
(*t).seconds=0;
(*t).minutes++;
if
((*t).minutes==60)
//计时满一小时,进位
(*t).minutes=0;
(*t).hours++;
if((*t).hours==24)
(*t).hours=0;
//delay();
sleep(10);
//sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms
void
display(struct
tm
*t)
//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间
printf("%d:",(*t).hours);
printf("%d:",(*t).minutes);
printf("%d:",(*t).seconds);
printf("%d\r",(*t).hscd);
//printf("now,
press
‘e’
key
to
stop
the
clock…");
void
time_init()
//初始化时间
time.hours=time.minutes=time.seconds=time.hscd=0;
void
get_total()
//计算总时间
total.hscd
=
cnt
%
100;
cnt
/=
100;
total.seconds
=
cnt
%
60;
cnt
/=
60;
total.minutes
=
cnt
%
60;
cnt
/=
60;
total.hours
=
cnt;
int
main()
char
m;
time_init();
cnt
=
0;
fout
=
fopen("timeout.txt","w");
printf("按回车键开始计时!\n");
while(1)
m
=
getch();
if(m
!=
‘\r’)
//读入一个输入,如果是回车,那么跳出次循环
printf("输入错误,仅能输入回车键!\n");
else
break;
printf("已经开始计时,但是你可以按回车键以分段计时!\n");
while(1)
if(kbhit())
//此处检查是否有键盘输入
m=getch();
if(m
==
‘\r’)
//如果等于回车,那么计时结束,跳出循环
break;
else
if(m
==
‘
‘)
//如果等于空格,显示此次计时,初始化计时器
tmp
=
time;
//记录上一段计时器结果
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
//写入文件
time_init();
printf("\n");
else
printf("输入错误,仅支持输入回车键或者空格键!\n");
update(&time);
//更新计时器
display(&time);
//显示计时器时间
tmp
=
time;
//输出最后一次即使结果,写入文件
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total();
//计算总的时间,显示,并写入文件
printf("\n总时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,"统计时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf("已经保存到当前目录下的timeout.txt文件中按任意键结束!");
getch();
以上是关于c语言中怎么设置计时器?的主要内容,如果未能解决你的问题,请参考以下文章