API使用示例代碼:
#include "boost/timer.hpp"
#include <iostream>
//原理:
//1, std::clock()是基礎,傳回自程序啟動直到調用時系統時鐘經曆的嘀嗒數
//2, 該基礎API并不跨平台,類Unix平台裡CLOCKS_PER_SEC等于1000000,
//而WINDOWS為1000,即計時精度分别為1/1000000秒和1/1000秒
//3, 同時因為最大計時範圍的原因,此類也不适于對跨年、月、日的大跨度時間計數;
int main(int argc, char *argv[])
{
using namespace std;
using namespace boost;
timer t;//構造對象時即開始計時
//t.restart();重新計時
cout << "max timespan:"
<< t.elapsed_max() / 3600 << "h" << endl;//計算最大計時範圍
cout << "min timespan:"
<< t.elapsed_min() << "s" << endl;//計算計時精度
cout << "now-time esapsed:"
<< t.elapsed() << "s" << endl;//計算目前位置距程序啟動時流逝的秒數
return 0;
}
#include <ctime>
#include <limits>//求極限
class timer
{
public:
timer() { _start_time = std::clock(); }
void restart() { _start_time = std::clock(); }
double elapsed() const//對于不修改内部資料的函數,用const修飾,既是風格也可以順便測試
{
//這裡使用double()作為一種顯式提升資料精度的方式,而不是隐式轉換
return double(std::clock() - _start_time) / CLOCKS_PER_SEC;
}
double elapsed_min() const
{
return double(1) / double(CLOCKS_PER_SEC);
}
double elapsed_max() const
{
//使用标準庫接口limits,計算一種資料類型的極限值
return (double((std::numeric_limits<std::clock_t>::max)())
- double(_start_time)) / double(CLOCKS_PER_SEC);
}
private:
std::clock_t _start_time;
};