C语言如何 计算程序运行时间?

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)

可以看到每过千分之一秒(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++中,最小的计时单位是一毫秒。

引用自:http://blog.csdn.net/querdaizhi/article/details/6925156

时间: 2024-11-05 20:43:18

C语言如何 计算程序运行时间?的相关文章

c语言/c++计算程序运行时间

精确到毫秒(ms) #include<stdio.h> #include<time.h> //用到clock()函数 int main() { int begintime,endtime; int i = 0; int a[1002]; begintime=clock(); //计时开始 /* 代码块 */ endtime = clock(); //计时结束 printf("\n\nRunning Time:%dms\n", endtime-begintime)

c++ 计算程序运行时间

转载 http://blog.csdn.net/trustbo/article/details/10582287 以前经常听人提起如何计算程序运行时间,给出一系列函数,当时没有注意,随便选了clock()最简单的方式进行计算.等到真正需要检测程序性能提升了多少,才发现这里面有很多要注意的地方. 最常用的的方式: #include time_t start = clock(); time_t end = clock(); printf("the running time is : %f\n&quo

C/C++可以用的计算程序运行时间的方法

#include"head_file.h" #include<sys/timeb.h> #include<stdio.h> int main() { timeb t1, t2;//定义两个变量 long t; double x, sum = 0, sum1=1; int i, j, n; printf("请输入x n:"); scanf("%lf %d",&x,&n); ftime(&t1);//记

Python 计算程序运行时间

import time def start_sleep():    time.sleep(3) if __name__ == '__main__':    #The start time     start = time.clock() #A program which will run for 3 seconds    start_sleep() #The End time     end = time.clock() print("The function run time is : %.0

C++获取当前时间和计算程序运行时间的方法

C++获取当前时间和计算程序运行时间的方法 获取当前时间: #include <iostream> #include <Windows.h> using namespace std; int main() { SYSTEMTIME sys; GetLocalTime(&sys); cout<<sys.wYear<<"年"; cout<<sys.wMonth<<"月"; cout<&

Delphi计算程序运行时间

1 var 2 StartTime, EndTime: cardinal; 3 begin 4 StartTime := GetTickCount; 5 sleep(1000); 6 EndTime := GetTickCount; 7 caption := (IntToStr(EndTime - StartTime) + ' ms'); 8 end; 转:Delphi 计算程序运行时间 http://www.delphitop.com/html/chengxu/2882.html 原文地址:h

一起talk C栗子吧(第三十五回:C语言实例--测试程序运行时间)

各位看官们,大家好,上一回中咱们说的是巧用溢出计算最值的例子,这一回咱们说的例子是:测试程序 运行时间.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,在编写程序的时候,可能需要计算程序运行的时间.通过计算时间,可以查看程序的性能.其实 我们在第三十一回中对各种常用排序算法总结时也使用过这种方法,不过当时使用的是Linux提供的time 命令.如果大家忘记了第三十一回的内容,可以点击这里查看. 我们今天说的测试程序运行时间,是让程序自己测试运行时间,而不是像第三十一回中哪样借用其它工

Python计算程序运行时间

方法1 import datetime starttime = datetime.datetime.now() #long running endtime = datetime.datetime.now() print (endtime - starttime).seconds 方法 2 start = time.time() run_fun() end = time.time() print end-start 方法3 start = time.clock() run_fun() end =

java如何计算程序运行时间

long startTime = System.currentTimeMillis();    //获取开始时间 doSomething();    //测试的代码段 long endTime = System.currentTimeMillis();    //获取结束时间 System.out.println("程序运行时间:" + (endTime - startTime) + "ms");    //输出程序运行时间 第二种是以纳秒为单位计算的. long