C/C++完成一个简单的计算时间类与获取系统时间方法

           有时候在做项目的时候经常要遇计算耗时,这些需要自己写一个计算时间的类,前几天看了点资料,比较简单的c++中来写Time类的方法在后面写出来啦!

           顺便经常在项目中需要自己写个Log类,里面打Log,来判断什么时间发生的crash,或者来判断发生操作的时间,在代码的最后也写出来调用windows.h的方便的办法!


代码如下:

#include<ctime>
#include<conio.h>
#include"time.h"
#include<iostream>
#include<cstdio>
#include <Windows.h>
using namespace std;
class Time{
private:
	char* name;
	double begin;
	double end;
public:
	Time(char*);
	Time(clock_t, char*);
	~Time();
	void start();
	void stop();
	void show();
};

//Time.cpp 成员函数定义
Time::Time(char* pName)
{
	name=new char[strlen(pName)+1];
	cout << "创建对象" << pName<< "开始计时..." << endl;
	strcpy(name, pName);							//初始化类对象名
	begin = end = 0.0;					    	//初始化数据成员begin和end
}
Time::Time(clock_t t, char* pName)
{
	name=new char[strlen(pName)+1];
	cout << "创建对象" << pName<< "开始计时..." << endl;
	strcpy(name, pName);							//初始化类对象名
	begin = (double)t / CLOCKS_PER_SEC;
	end = 0.0;
}
Time::~Time()
{
	cout << "析构Time类对象" << name << endl;
	delete[] name;
}
void Time::start()
{
	begin = (double)clock() / CLOCKS_PER_SEC;
}
void Time::stop()
{
	end = (double)clock() / CLOCKS_PER_SEC;
	show();
}
void Time::show()
{
	cout << "开始时间为:"<< begin << "秒"<<endl;
	cout << "结束时间为:"<< end<< "秒"<<endl;
	cout << "消耗的时间为:"<< (end - begin) << "秒"<<endl;
}

//主函数
void main()
{
	Time time1("t1");
	time1.start();
	Sleep(1000);
	time1.stop();

	//Creat object using initial value
	Time time2(clock(), "t2");
	Sleep(1000);
	time2.stop();

	//利用windows.h来获取系统时间,再计算耗时,时间上的损失较大
	SYSTEMTIME sysTime1; 
	SYSTEMTIME sysTime2; 
	GetLocalTime( &sysTime1 ); 
	Sleep(1000);
	GetLocalTime( &sysTime2 ); 
	cout<<(sysTime2.wSecond-sysTime1.wSecond)<<'.'<<(sysTime2.wMilliseconds-sysTime1.wMilliseconds)<<endl;
	cout<<sysTime1.wHour<<':'<<sysTime1.wMinute<<':'<<sysTime1.wSecond<<endl;
}

其中:


1.clock():

clock()是C/C++中的计时函数,而与其相关的 数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t clock(void) ;
简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的 数据类型

2.CLOCKS_PER_SEC:

它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
        #define CLOCKS_PER_SEC ((clock_t)1000)
       可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。
     可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值