
C语言中的头文件timeh中定义了库函数clock(),
timeh还定义了符号:CLOCKS_PER_SEC,
即一秒钟的时钟周期。这样就简单了,
在头文件中加入#include<timeh>,在程序main()主函数的开头定义long now=0;
并给把clock()赋值给now,即now=clock();记录程序开始时的时间,clock()会继续增加,
但now已经确定为开始那一时刻clock()的值,
在程序结尾,算式clock()-now就是程序执行所需的时间,
但是是以时钟周期为单位的,
如果想得到以秒为单位的时间只要输出(clock()-now)/CLOCKS_PER_SEC就是了,
即在程序结尾添加
printf("%f",(clock()-now)/CLOCKS_PER_SEC);就可以了。
//timeh头文件中定义了常用的时间函数
//time_t是系统定义的一个数据类型,为长整型,用来存储时间
//因为其中一些函数获得的时间是公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。
//可以将那个秒数转化为我们日常用的公历时间,这个你看看那些函数说明就自己能用了
//difftime()用来计算两次时间差(单位是秒)
//time()用来获取时间
#include <iostream>
#include <timeh>
#include <conioh>
using namespace std;
int main(void)
{
time_t t_start,t_end;
t_start = time(NULL) ;
cout<<"按任意键继续"<<endl;
getch();
t_end = time(NULL) ;
cout<<difftime(t_end,t_start)<<endl;
return 0;
}
用结构选板里面的-定时结构-定时循环,这个控件比较复杂,但是是许多工业控制程序必用的时间控制结构,精确而且功能多,刷新时间都可以自行设定,默认就是1s。它不管程序里面其他结构如何运行,它计算的就是从程序第一次运行以来所用掉的时间,当然结合其他的控件比如“已用时间控件”或者结合文件的 *** 作会让它更强大,有问题可以交流
共勉,我也在学习阶段。
#include <timeh>
#include <stdioh>
int main(void) {
//nano time
struct timespec ts1,ts2,ts3,ts4,ts5;
int err;
err = clock_gettime(CLOCK_REALTIME,&ts1);
if(err < 0) {
return 1;
}
printf("ts1 nano:%di\n",ts1tv_nsec);
err = clock_gettime(CLOCK_REALTIME,&ts2);
if(err < 0) {
return 1;
}
printf("ts2 nano:%d\n",ts2tv_nsec);
printf("nano:ts2-ts1=%d\n",ts2tv_nsec-ts1tv_nsec);
err = clock_gettime(CLOCK_MONOTONIC,&ts3);
if(err < 0) {
return 1;
}
printf("system started time nano:%d\n",ts3tv_nsec);
err = clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&ts4);
if(err < 0) {
return 1;
}
printf("process cpu time nano:%d\n",ts4tv_nsec);
err = clock_gettime(CLOCK_THREAD_CPUTIME_ID,&ts5);
if(err < 0) {
return 1;
}
printf("thread cup time nano:%d\n",ts5tv_nsec);
return 0;
}
BOOL QueryPerformanceFrequency(LARGE_INTEGER lpFrequency);可以返回硬件支持的高精度计数器的频率。先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。接着在需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),利用两次获得的计数之差和时钟频率,就可以计算出事件经历的精确时间。
#include "stdafxh"#include <windowsh>
#include <timeh>
#include "processh"
#define random(x) (rand()%x)
int _tmain(int argc, _TCHAR argv[])
{
LARGE_INTEGER fre = { 0 }; //储存本机CPU时钟频率
LARGE_INTEGER startCount = { 0 };
LARGE_INTEGER endCount = { 0 };
QueryPerformanceFrequency(&fre);//获取本机cpu频率
//开始计时
QueryPerformanceCounter(&startCount);
//运算
for (int i = 0; i < 10000000; i++)
{
float fTem1 = random(100)random(1000)random(10000)random(100000);
}
//结束计时
QueryPerformanceCounter(&endCount);
//计算时间差
double dTimeTake = ((double)endCountQuadPart - (double)startCountQuadPart) / (double)freQuadPart;
printf("用时%f\n", dTimeTake);
system("pause");
return 0;
}
//timeh头文件中定义了常用的时间函数
//time_t是系统定义的一个数据类型,为长整型,用来存储时间
//因为其中一些函数获得的时间是公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。
//可以将那个秒数转化为我们日常用的公历时间,这个你看看那些函数说明就自己能用了
//difftime()用来计算两次时间差(单位是秒)
//time()用来获取时间
#include <iostream>
#include <timeh>
#include <conioh>
using namespace std;
int main(void)
{
time_t t_start,t_end;
t_start = time(NULL) ;
cout<<"按任意键继续"<<endl;
getch();
t_end = time(NULL) ;
cout<<difftime(t_end,t_start)<<endl;
return 0;
}
以上就是关于关于C语言程序设计的计时器全部的内容,包括:关于C语言程序设计的计时器、C++如何实现计时功能、labview中如何准确计时,就是说统计程序运行所用的秒数。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)