C++ 實現計時器

目錄

timer.h

timer.cpp

main.cpp


timer.h

#pragma once
#include <iostream>
#include <cstdlib>
#include <time.h>

class timer
{
public:
	timer();
	void restart();	        //重新設定開始時間
	double elapsed() const; //流逝的時間 毫妙
	void sleep(double ms);  //等待多少毫秒
	double elapsed_min() const; //時間最大值
	double elapsed_max() const; //時間最小值
protected:
private:
	clock_t start_time;
};

timer.cpp

#include "timer.h"

timer::timer()
{
	start_time = clock(); //開始時間
}
void timer::restart()
{
	start_time = clock();//實際上是cpu運行的次數
}
double timer::elapsed() const //毫秒
{
	return double(clock() - start_time) / CLOCKS_PER_SEC * 1000;	//一秒鐘內CPU運行的次數
}
void timer::sleep(double ms)
{
	while (true)
	{
		if (elapsed() == ms/1000.)
		{
			break;
		}
	}
}
double timer::elapsed_min() const
{
	return double(1) / double(CLOCKS_PER_SEC); //時間精度
}
double timer::elapsed_max() const
{
	//clock_t的最大值 
	return double((std::numeric_limits<clock_t>::max())) - double(start_time) / double(CLOCKS_PER_SEC);
}

main.cpp

#include "timer.h"

/*
	CLOCKS_PER_SEC是標準c的time.h頭函數中宏定義的一個常數,表示一秒鐘內CPU運行的時鐘週期數,
	用於將clock()函數的結果轉化爲以秒爲單位的量,但是這個量的具體值是與操作系統相關的。
*/
int main()
{
	timer t;
	
	t.sleep(1000); //等待1000毫妙
	std::cout << t.elapsed() << std::endl; //流逝的時間
	t.restart(); //重新定義開始時間
	std::cout << t.elapsed() << std::endl; //流逝的時間
	//存C++可以不寫返回值
	system("pause");
}

//結果
//1
//0
//請按任意鍵繼續. . .

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章