目錄
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
//請按任意鍵繼續. . .