refactor: extract lib_timer
This commit is contained in:
parent
14dbf00775
commit
10b19749f7
8 changed files with 433 additions and 4 deletions
12
lib_timer/CMakeLists.txt
Normal file
12
lib_timer/CMakeLists.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
project(
|
||||
timer
|
||||
VERSION 0.1.0
|
||||
LANGUAGES CXX)
|
||||
|
||||
add_library(timer STATIC src/timer.cpp include/timer.h)
|
||||
|
||||
target_include_directories(timer PUBLIC ${PROJECT_SOURCE_DIR}/include)
|
||||
|
||||
target_compile_features(timer PUBLIC cxx_std_20)
|
20
lib_timer/include/timer.h
Normal file
20
lib_timer/include/timer.h
Normal file
|
@ -0,0 +1,20 @@
|
|||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
#include <ostream>
|
||||
|
||||
class Timer {
|
||||
private:
|
||||
std::chrono::time_point<std::chrono::high_resolution_clock> start_;
|
||||
std::chrono::time_point<std::chrono::high_resolution_clock> end_;
|
||||
|
||||
public:
|
||||
Timer();
|
||||
|
||||
void start();
|
||||
void stop();
|
||||
|
||||
long us() const;
|
||||
};
|
||||
|
||||
std::ostream &operator<<(std::ostream &os, const Timer &timer);
|
32
lib_timer/src/timer.cpp
Normal file
32
lib_timer/src/timer.cpp
Normal file
|
@ -0,0 +1,32 @@
|
|||
#include "timer.h"
|
||||
|
||||
#include <chrono>
|
||||
|
||||
Timer::Timer() { start(); };
|
||||
|
||||
void Timer::start() { start_ = std::chrono::high_resolution_clock::now(); }
|
||||
|
||||
void Timer::stop() { end_ = std::chrono::high_resolution_clock::now(); }
|
||||
|
||||
long Timer::us() const {
|
||||
return std::chrono::duration_cast<std::chrono::microseconds>(end_ - start_)
|
||||
.count();
|
||||
}
|
||||
|
||||
std::ostream &operator<<(std::ostream &os, const Timer &timer) {
|
||||
long time = timer.us();
|
||||
|
||||
if (time >= 1e6) {
|
||||
os << time / static_cast<long>(1e6) << " s ";
|
||||
time %= static_cast<long>(1e6);
|
||||
}
|
||||
|
||||
if (time >= 1e3) {
|
||||
os << time / static_cast<long>(1e3) << " ms ";
|
||||
time %= static_cast<long>(1e3);
|
||||
}
|
||||
|
||||
os << time << " µs";
|
||||
|
||||
return os;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue