C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t clock( void );
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中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) //CLOCKS_PER_SEC为系统自定义的
可以看到每过千分之一秒(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( )
{
long i = 10000000L;
clock_t start, finish;
double Total_time;
/* 测量一个事件持续的时间*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i--) ;
finish = clock();
Total_time = (double)(finish-start) / CLOCKS_PER_SEC;
printf( "%f seconds/n", Total_time);
return 0;
}
在笔者的机器上,运行结果如下:
Time to do 10000000 empty loops is 0.03000 seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。
参考资料
c语言测试程序执行时间.csdn博客[引用时间2017-12-31]
本回答被网友采纳谢谢啊~~如果要算的更加精确应该用什么函数啊?比如想精确到微妙级别的,谢谢!!
追答需要系统api
加上头文件windows.h
FILETIME beg,end;
GetSystemTimeAsFileTime(&beg);
GetSystemTimeAsFileTime(&end);
long dur = 100*(end.dwLowDateTime-beg.dwLowDateTime);
C语言求一个程序运行时间
C\/C++中的计时函数是clock()。所以,可以用clock函数来计算的运行一个循环、程序或者处理其它事件到底花了多少时间,具体参考代码如下:include “stdio.h”#include “stdlib.h”#include “time.h”int main( void ){ long i = 10000000L; clock_t start, finish; double duration;...
求C语言运行时间测试代码!
include include<stdio.h> include<stdlib.h> void main(void){ clock_t start,finish;double duration;start = clock();\/\/ \/\/被测时间的随便什么东西 \/\/ finish = clock();duration = double(finish - start)\/CLOCKS_PER_SEC;printf("time used:%f ms\\n\\n",1000*duration);} ...
求C语言程序:如何获得一个程序运行的时间? 最好带一段简单的代码 新人...
调用sysinfo()获得系统启动以来经历的秒数时间。这个不属于高精度计时。如果要进行高精度计时,高精度时间,C运行库的gettimeofday().(当然据我估计也是受到系统更改时间的影响)。用绝对时间判断系统时间有没有被更改,用高精度时间精确计时,二者结合才是王道。
单片机c语言怎么记录程序运行时间
1、debug中查看运行时间。这个好像不太准确。2、反汇编后,通过指令周期和晶振频率计算。3、程序中加入定时器中断程序,来计算程序运行时间。看到你的问题,暂时就想起这么多。
C语言的clock()测出来的是什么时间
clock函数返回的是cpu时间,并不是秒数,真正的一秒钟可能包含若干个CPU时间,这个值通常是由宏CLOCKS_PER_SEC来定义,表示一秒中有CLOCKS_PER_SEC这么多个cpu时间,不同的编译器可能不同,比如,linux C中,它是1000000,在VC6中,它是1000,你用cost除以CLOCKS_PER_SEC即可得到实际的秒数。附linux...
如何查看用c语言编写的程序的运行时间,以及内存使用
1、计时:主板高精度计时器, 精度是us级的(0.000001s)2、占用内存可用进程管理器测试
C语言中如何输出显示程序的运行时间? 望赐教!
QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);可以返回硬件支持的高精度计数器的频率。先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。接着在需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),利用两次获得的计数之差和时钟频率,就可以计算出事件经历的精确时间...
怎样用c语言设计计算程序执行的时间?
C语言中的头文件time.h中定义了库函数clock(),它返回的是从程序运行开始算起的时间,一时钟周期为单位,time.h还定义了符号:CLOCKS_PER_SEC,即一秒钟的时钟周期。这样就简单了,在头文件中加入#include,在程序main()主函数的开头定义long now=0;并给把clock()赋值给now,即now=clock()...
编写一个C语言的小程序,如何测试它的运行速度?
include <stdio.h> include int main(){ clock_t t = clock();\/*这里放入要测试速度的代码*\/ printf("运行时间%.4f秒\\n", (double)(clock() - t) \/ CLOCKS_PER_SEC);return 0;}
怎么用C语言计算过程运行时间?具体点,文件头,等等...
\/\/vc环境 clock_t tb,te;tb=clock(NULL);for(int i=0;i<1000000;i++)for(int j=0;j<1000000;j++);te=clock(NULL);cout << (te-tb)\/CLK_TK << "毫秒"