您的位置:首页 > 编程语言 > C语言/C++

c++封装系统time函数,方便实现运行时间的打印

2017-05-12 19:58 489 查看
//timer.h
#include <time.h>

class Timer {
public:
Timer();
~Timer();
bool start();
bool pause(bool is_reset);
size_t get_sec_timespan() const;
size_t get_msec_timespan() const;
size_t get_usec_timespan() const;
size_t get_nsec_timespan() const;

private:
size_t _get_timespan(size_t sec_power, double nsec_power) const;
private:
struct timespec _beg_time;
struct timespec _end_time;
};
以下是cpp实现文件
#include "timer.h"

Timer::Timer() {}

Timer::~Timer() {}

bool Timer::start() {
if (clock_gettime(CLOCK_REALTIME, &_beg_time) == -1) {
printf("get time failed.");
return false;
}
return true;
}

bool Timer::pause(bool is_reset) {
if (is_reset) {
_beg_time = _end_time;
}
if (clock_gettime(CLOCK_REALTIME, &_end_time) == -1) {
printf("get time failed.");
return false;
}
return true;
}

size_t Timer::get_sec_timespan() const {
return _get_timespan(1, 0.000000001);
}

size_t Timer::get_msec_timespan() const {
return _get_timespan(1000, 0.000001);
}

size_t Timer::get_usec_timespan() const {
return _get_timespan(1000000, 0.001);
}

size_t Timer::get_nsec_timespan() const {
return _get_timespan(1000000000, 1);
}

size_t Timer::_get_timespan(size_t sec_power, double nsec_power) const {
double span = (_end_time.tv_sec - _beg_time.tv_sec) * sec_power +
(_end_time.tv_nsec - _beg_time.tv_nsec) * nsec_power;
return static_cast<size_t>(span);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ c语言