C++中程序运行时间的计算
2010-12-12 19:43
831 查看
在我们编写C++程序的时候,特别是在做算法测试的时候,这是就需要计算程序的运行时间,已测试程序效率的优劣。为此,以下我们就讨论几种方法。
法一: 使用clock()
C++程序运行时间中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
这个函数返回从“开启这个程序进程”到“程序中调用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,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
法二:windows系统时间--SYSTEMTIME
该结构顾名思义表示系统当前的时间,其为windows系统提供,故仅可用于windows操作系统中。
在MSDN中,该结构体存在与<windows.h>中,其结构描述为:
具体获取系统时间的方法为:
法三:GetTickCount()
GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。
函数原型: DWORD GetTickCount(void);
使用实例:
使用时可类似如下写法:
DWORD stime = GetTickCount();
... ...
DWORD etime = GetTickCount();
long time = etime - stime; // 单位:ms
法一: 使用clock()
C++程序运行时间中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
这个函数返回从“开启这个程序进程”到“程序中调用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,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
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", duration); system("pause"); }
法二:windows系统时间--SYSTEMTIME
该结构顾名思义表示系统当前的时间,其为windows系统提供,故仅可用于windows操作系统中。
在MSDN中,该结构体存在与<windows.h>中,其结构描述为:
typedef struct _SYSTEMTIME { WORD wYear; // The current year. WORD wMonth; // The current month; January is 1. WORD wDayOfWeek; // The current day of the week; Sunday is 0, Monday is 1, and so on. WORD wDay; // The current day of the month. WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; // The current millisecond. } SYSTEMTIME, *LPSYSTEMTIME;
具体获取系统时间的方法为:
#include <windows> using namespace std; void main() { SYSTEMTIME sys; GetLocalTime(&sys); int year = sys.wYear; int month = sys.wMonth; }
法三:GetTickCount()
GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。
函数原型: DWORD GetTickCount(void);
使用实例:
CString s; DWORD k=::GetTickCount(); //获取毫秒级数目 int hm=k/3600000; //hm为小时数 int ms=(k-3600000*hm)/60000; //ms为分钟数 int se=(k-3600000*hm-60000*ms)/1000; //se为秒数(除以1000是因为k精确到毫秒) s.Format("%d:%d:%d",hm,ms,se); //输出时、分、秒 库文件:kernl32.dll C/C++头文件:winbase.h windows程序设计中可以使用头文件windows.h
使用时可类似如下写法:
DWORD stime = GetTickCount();
... ...
DWORD etime = GetTickCount();
long time = etime - stime; // 单位:ms
相关文章推荐
- C/C++中计算程序的运行时间
- C/C++中计算程序运行时间
- C++中计算程序的运行时间
- C++ 高精度计算程序运行时间的程序
- c++计算程序运行时间
- C++程序运行时间计算
- C++程序运行时间计算
- 一个c++中计算算法运行时间的程序
- C++中计算程序的运行时间
- C++高精度实现计算程序运行时间
- C++高精度实现计算程序运行时间
- C/C++中如何计算程序运行时间?
- 【转】计算C++程序运行时间
- c++如何计算程序运行的时间
- C++获取当前时间和计算程序运行时间的方法
- C++中计算程序运行的时间
- C++高精度实现计算程序运行时间
- [转]c++中计算运行时间 clock(),clock_t程序
- C++中如何计算程序运行的时间 (转载)
- C++实现计算程序运行时间 高精度