C++中两种常用的记录程序运行时间的方法的总结
来源:互联网 发布:电脑网络接收器 编辑:程序博客网 时间:2024/06/10 04:52
关于C++中计算时间的一些总结
方法一:clock()计时函数
clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t clock(void) ;
简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型。
在time.h文件中,我们可以找到对clock_t()的定义:
- <span style="font-size:14px;">#ifndef _CLOCK_T_DEFINED
- typedef long clock_t;
- #define _CLOCK_T_DEFINED
- #endif</span>
很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
测试程序:
- <span style="font-size:14px;"><span style="font-size:18px;">#include<iostream>
- #include<time.h>
- using namespace std;
- int main()
- {
- clock_t startTime,endTime;
- startTime = clock();
- for (int i = 0; i < 1000000; i++)
- {
- i++;
- }
- endTime = clock();
- cout << "Totle Time : " <<(double)(endTime - startTime) / CLOCKS_PER_SEC << "s" << endl;
- system("pause");
- return 0;
- }</span></span>
- <span style="font-size:14px;">#include<iostream>
- #include<time.h>
- using namespace std;
- int main()
- {
- for (int i = 0; i < 1000000; i++)
- {
- i++;
- }
- cout << "Totle Time : " << (double)clock() /CLOCKS_PER_SEC<< "s" << endl;
- system("pause");
- return 0;
- }</span>
方法二:GetTickCount()函数:
GetTickCount是函数。GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。
函数原型:
DWORD GetTickCount(void);
头文件:
C/C++头文件:winbase.h
windows程序设计中可以使用头文件windows.h
测试代码:
- <span style="font-size:14px;">#include<iostream>
- #include<Windows.h>
- using namespace std;
- int main()
- {
- DWORD start_time = GetTickCount();
- for (int i = 0; i < 100000000; i++)
- {
- i++;
- }
- DWORD end_time = GetTickCount();
- cout << "The run time is:" << (end_time - start_time) << "ms!" << endl;
- system("pause");
- return 0;
- }</span>
GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWORD GetTickCount(void),返回值以32位的双字类型DWORD存储,因此可以存储的最大值是(2^32-1) ms约为49.71天,因此若系统运行时间超过49.71天时,这个数就会归0,MSDN中也明确的提到了:"Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days."。因此,如果是编写服务器端程序,此处一定要万分注意,避免引起意外的状况。
特别注意:这个函数并非实时发送,而是由系统每18ms发送一次,因此其最小精度为18ms。当需要有小于18ms的精度计算时,应使用StopWatch方法进行。
用clock()函数计算运行时间,表示范围一定大于GetTickCount()函数,所以,建议使用clock()函数。
用clock()函数计算运行时间,表示范围一定大于GetTickCount()函数,所以,建议使用clock()函数。
0 0
- C++中两种常用的记录程序运行时间的方法的总结
- C++中两种常用的记录程序运行时间的方法的总结
- 题目:C++中两种常用的记录程序运行时间的方法的总结
- C++ 记录程序运行时间的方法总结
- 记录程序的运行时间
- 记录程序运行的时间
- C/C++记录程序运行时间的类
- 记录程序运行时间的程序实例
- c++中常用的计算程序运行时间的方法
- c++中常用的计算程序运行时间的方法
- 常用的三种获取程序运行时间的方法
- C++记录程序运行的时间
- c语言计算程序运行时间的方法
- 【C++】C++中几种测试程序运行时间的方法
- 计算程序的运行时间(C++)
- 计算程序的运行时间(c语言)
- 计算程序的运行时间(C++) .
- C 语言计算程序运行的时间
- 根据list对象的某一个属性进行排序
- 专访柠檬酱工作室:独立游戏更需要玩家的支持
- Docker MySQL实践以及解除3306端口本地占用
- ASP.NET Web Pages – 文件夹
- 查看time_wait状态数量
- C++中两种常用的记录程序运行时间的方法的总结
- 偏心的父母,值不值得孝顺
- 机器学习系列(1)_逻辑回归初步
- hadoop3新特性
- 动态规划之数字三角形
- TCP和IP协议的解析
- Java-基础 数组的常用操作
- 多线程(刚理解)
- Java大文件上传