MeshLib
 
Loading...
Searching...
No Matches
MRTimer.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include <chrono>
5#include <string>
6
7namespace MR
8{
9
12
13struct TimeRecord;
14
15class Timer
16{
17public:
18 Timer( std::string name ) { start( std::move( name ) ); }
19 ~Timer() { finish(); }
20
21 MRMESH_API void restart( std::string name );
22 MRMESH_API void start( std::string name );
24
25 Timer( const Timer & ) = delete;
26 Timer & operator =( const Timer & ) = delete;
27 Timer( Timer && ) = delete;
28 Timer & operator =( Timer && ) = delete;
29
30 std::chrono::duration<double> secondsPassed() const { return std::chrono::high_resolution_clock::now() - start_; }
31
32private:
33 std::chrono::time_point<std::chrono::high_resolution_clock> start_;
34 bool started_{ false };
35};
36
39MRMESH_API void printTimingTreeAtEnd( bool on, double minTimeSec = 0.1 );
40
43
46MRMESH_API void printTimingTreeAndStop( double minTimeSec = 0.1 );
47
49
50} // namespace MR
51
52#define MR_TIMER MR::Timer _timer( __FUNCTION__ );
53#define MR_NAMED_TIMER(name) MR::Timer _named_timer( name );
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:46
Definition MRTimer.h:16
MRMESH_API void finish()
MRMESH_API void restart(std::string name)
Timer(const Timer &)=delete
~Timer()
Definition MRTimer.h:19
std::chrono::duration< double > secondsPassed() const
Definition MRTimer.h:30
MRMESH_API void start(std::string name)
Timer(Timer &&)=delete
Timer(std::string name)
Definition MRTimer.h:18
Timer & operator=(const Timer &)=delete
MRMESH_API void printTimingTreeAtEnd(bool on, double minTimeSec=0.1)
MRMESH_API void printCurrentTimerBranch()
prints current timer branch
MRMESH_API void printTimingTreeAndStop(double minTimeSec=0.1)
Definition MRCameraOrientationPlugin.h:7