MeshLib C++ Docs
Loading...
Searching...
No Matches
MRTimer.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRPch/MRBindingMacros.h"
5#include <chrono>
6#include <string>
7
8namespace MR
9{
10
13
14struct TimeRecord;
15
17{
18public:
19 Timer( std::string name ) { start( std::move( name ) ); }
22 Timer( const char * name ) { start( name ); }
23 ~Timer() { finish(); }
24
25 MRMESH_API void restart( std::string name );
26 MRMESH_API void start( std::string name );
27 MRMESH_API void start( const char * name );
29
30 Timer( const Timer & ) = delete;
31 Timer & operator =( const Timer & ) = delete;
32 Timer( Timer && ) = delete;
33 Timer & operator =( Timer && ) = delete;
34
35 std::chrono::duration<double> secondsPassed() const { return std::chrono::high_resolution_clock::now() - start_; }
36
37private:
38 std::chrono::time_point<std::chrono::high_resolution_clock> start_;
39 bool started_{ false };
40};
41
44MRMESH_API void printTimingTreeAtEnd( bool on, double minTimeSec = 0.1 );
45
48
51MRMESH_API void printTimingTree( double minTimeSec = 0.1 );
52
54
55}
56
57#ifdef __GNUC__
58#define MR_TIMER MR::Timer _timer( __PRETTY_FUNCTION__ )
59#else
60#define MR_TIMER MR::Timer _timer( __FUNCTION__ )
61#endif
62#define MR_NAMED_TIMER(name) MR::Timer _named_timer( name )
#define MRMESH_API
Definition MRMeshFwd.h:85
void restart(std::string name)
Timer(const char *name)
Definition MRTimer.h:22
Timer(const Timer &)=delete
~Timer()
Definition MRTimer.h:23
std::chrono::duration< double > secondsPassed() const
Definition MRTimer.h:35
void start(std::string name)
void start(const char *name)
Timer(Timer &&)=delete
void finish()
Timer(std::string name)
Definition MRTimer.h:19
void printTimingTree(double minTimeSec=0.1)
void printTimingTreeAtEnd(bool on, double minTimeSec=0.1)
void printCurrentTimerBranch()
prints current timer branch
std::array< Vector3f, 3 > MR_BIND_IGNORE
Definition MRMeshBuilderTypes.h:13
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRTimeRecord.h:24