Nektar++
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes | List of all members
Nektar::LibUtilities::Timer Class Reference

#include <Timer.h>

Public Types

using Clock = std::chrono::steady_clock
 
using CounterType = Clock::time_point
 
using Seconds = std::chrono::duration< NekDouble >
 

Public Member Functions

 Timer ()=default
 
 ~Timer ()=default
 
 Timer (const Timer &rhs)=delete
 
Timeroperator= (const Timer &rhs)=delete
 
void Start ()
 
void Stop ()
 
Seconds Elapsed ()
 
void AccumulateRegion (std::string, int iolevel=0)
 Accumulate elapsed time for a region. More...
 
NekDouble TimePerTest (unsigned int n)
 Returns amount of seconds per iteration in a test with n iterations. More...
 

Static Public Member Functions

static void PrintElapsedRegions ()
 Print elapsed time and call count for each region with default serial communicator. More...
 
static void PrintElapsedRegions (LibUtilities::CommSharedPtr comm, std::ostream &o=std::cout, int iolevel=0)
 Print elapsed time and call count for each region. More...
 

Private Attributes

CounterType m_start = CounterType()
 
CounterType m_end = CounterType()
 
bool m_isactive = false
 

Static Private Attributes

static std::map< std::string, std::tuple< Seconds, size_t, int > > m_elapsedRegion {}
 

Detailed Description

Definition at line 51 of file Timer.h.

Member Typedef Documentation

◆ Clock

using Nektar::LibUtilities::Timer::Clock = std::chrono::steady_clock

Definition at line 54 of file Timer.h.

◆ CounterType

using Nektar::LibUtilities::Timer::CounterType = Clock::time_point

Definition at line 55 of file Timer.h.

◆ Seconds

using Nektar::LibUtilities::Timer::Seconds = std::chrono::duration<NekDouble>

Definition at line 56 of file Timer.h.

Constructor & Destructor Documentation

◆ Timer() [1/2]

Nektar::LibUtilities::Timer::Timer ( )
default

◆ ~Timer()

Nektar::LibUtilities::Timer::~Timer ( )
default

◆ Timer() [2/2]

Nektar::LibUtilities::Timer::Timer ( const Timer rhs)
delete

Member Function Documentation

◆ AccumulateRegion()

void Nektar::LibUtilities::Timer::AccumulateRegion ( std::string  region,
int  iolevel = 0 
)

Accumulate elapsed time for a region.

Definition at line 72 of file Timer.cpp.

73{
74 // search for region
75 auto search = m_elapsedRegion.find(region);
76 if (search == m_elapsedRegion.end())
77 {
78 m_elapsedRegion.insert({region, std::make_tuple<Timer::Seconds, size_t>(
79 this->Elapsed(), 1, iolevel)});
80 }
81 else
82 {
83 std::get<0>(search->second) += this->Elapsed();
84 std::get<1>(search->second) += 1;
85 }
86}
static std::map< std::string, std::tuple< Seconds, size_t, int > > m_elapsedRegion
Definition: Timer.h:90

References Elapsed(), and m_elapsedRegion.

Referenced by Nektar::CFSImplicit::AddMatNSBlkDiagBnd(), Nektar::SolverUtils::AdvectionWeakDG::AdvectCoeffs(), Nektar::SolverUtils::AdvectionWeakDG::AdvectTraceFlux(), Nektar::PulseWaveSystem::BifurcationRiemann(), Nektar::PyrCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::TriCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::CFSImplicit::CalcPreconMatBRJCoeff(), Nektar::SolverUtils::DiffusionIP::CalcTraceNumFlux(), Nektar::LibUtilities::NekLinSysIterGMRES::DoArnoldi(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::DoArnoldi(), Nektar::UnsteadyAdvection::DoOdeRhs(), Nektar::CompressibleFlowSystem::DoOdeRhs(), Nektar::PulseWavePropagation::DoOdeRhs(), Nektar::CFSImplicit::DoOdeRhsCoeff(), Nektar::PulseWaveSystem::EnforceInterfaceConditions(), Nektar::PulseWaveSystem::FillDataFromInterfacePoint(), Nektar::PulseWavePropagation::GetFluxVector(), Nektar::PulseWaveSystem::InterfaceRiemann(), main(), Nektar::PulseWaveSystem::MergingRiemann(), Nektar::PreconCfsBRJ::MinusOffDiag2Rhs(), Nektar::CFSImplicit::NonlinSysEvaluatorCoeff(), Nektar::CFSImplicit::PreconCoeff(), Nektar::PulseWavePropagation::SetPulseWaveBoundaryConditions(), Nektar::SolverUtils::AdvectionWeakDG::v_Advect(), Nektar::NavierStokesAdvection::v_Advect(), Nektar::MultiRegions::ExpList::v_BwdTrans(), Nektar::SolverUtils::DiffusionIP::v_Diffuse(), Nektar::SolverUtils::DiffusionIP::v_DiffuseCoeffs(), Nektar::SolverUtils::DiffusionIP::v_DiffuseTraceFlux(), Nektar::SolverUtils::DiffusionIP::v_DiffuseVolumeFlux(), Nektar::PreconCfsBRJ::v_DoPreconCfs(), Nektar::PulseWaveSystem::v_DoSolve(), Nektar::VelocityCorrectionScheme::v_EvaluateAdvection_SetPressureBCs(), Nektar::VCSImplicit::v_EvaluateAdvection_SetPressureBCs(), Nektar::MultiRegions::ExpList::v_IProductWRTDerivBase(), Nektar::MultiRegions::ExpList::v_PhysDeriv(), and Nektar::VelocityCorrectionScheme::v_SolveUnsteadyStokesSystem().

◆ Elapsed()

Timer::Seconds Nektar::LibUtilities::Timer::Elapsed ( )

Definition at line 60 of file Timer.cpp.

61{
63 "Call to Timer::Elapsed() done before Timer::Stop().");
64 return std::chrono::duration_cast<Seconds>(m_end - m_start);
65}
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:215
CounterType m_start
Definition: Timer.h:86

References ASSERTL0, m_end, m_isactive, and m_start.

Referenced by AccumulateRegion(), Nektar::SolverUtils::DriverParallelInTime::EstimateCommunicationTime(), TimePerTest(), Nektar::SolverUtils::DriverParareal::v_EstimateCoarseSolverTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateCoarseSolverTime(), Nektar::SolverUtils::DriverParareal::v_EstimateFineSolverTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateFineSolverTime(), Nektar::SolverUtils::DriverParareal::v_EstimateInterpolationTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateInterpolationTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateOverheadTime(), Nektar::SolverUtils::DriverPFASST::v_EstimatePredictorTime(), Nektar::SolverUtils::DriverParareal::v_EstimateRestrictionTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateRestrictionTime(), Nektar::SolverUtils::DriverAdaptive::v_Execute(), Nektar::SolverUtils::DriverParareal::v_Execute(), Nektar::SolverUtils::DriverPFASST::v_Execute(), and Nektar::SolverUtils::DriverStandard::v_Execute().

◆ operator=()

Timer & Nektar::LibUtilities::Timer::operator= ( const Timer rhs)
delete

◆ PrintElapsedRegions() [1/2]

void Nektar::LibUtilities::Timer::PrintElapsedRegions ( )
static

Print elapsed time and call count for each region with default serial communicator.

Definition at line 88 of file Timer.cpp.

89{
90 std::string def("default");
91 char *argv = new char[def.length() + 1];
92 std::strcpy(argv, def.c_str());
95
97
98 delete[] argv;
99}
static void PrintElapsedRegions()
Print elapsed time and call count for each region with default serial communicator.
Definition: Timer.cpp:88
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
Definition: Comm.h:57

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and PrintElapsedRegions().

Referenced by Nektar::TriCollectionTests::BOOST_AUTO_TEST_CASE(), and PrintElapsedRegions().

◆ PrintElapsedRegions() [2/2]

void Nektar::LibUtilities::Timer::PrintElapsedRegions ( LibUtilities::CommSharedPtr  comm,
std::ostream &  o = std::cout,
int  iolevel = 0 
)
static

Print elapsed time and call count for each region.

Definition at line 101 of file Timer.cpp.

103{
104 // Return if there is nothing to write, or the user has disabled printing
105 if (m_elapsedRegion.begin() == m_elapsedRegion.end() || iolevel < 0)
106 {
107 return;
108 }
109
110 // Define content of each column that will be written
111 std::vector<std::string> labels{"Region", "Elapsed time Avg (s)",
112 "Min (s)", "Max (s)",
113 "Count", "IO Level"};
114
115 // Set width of each column (minimum 14 characters)
116 std::vector<size_t> widths;
117 for (const auto &label : labels)
118 {
119 widths.push_back(std::max<size_t>(label.size() + 2, 14));
120 }
121
122 // Make sure that names for each "Region" fits
123 for (const auto &entry : m_elapsedRegion)
124 {
125 widths[0] = std::max<size_t>(entry.first.size() + 2, widths[0]);
126 }
127
128 // Print header
129 if (comm->GetRank() == 0)
130 {
131 o << "-------------------------------------------\n";
132 for (int i = 0; i < labels.size(); ++i)
133 {
134 o << std::setw(widths[i]) << labels[i];
135 }
136 o << '\n';
137 }
138
139 // first write out execute time
140 auto item = m_elapsedRegion.find("Execute");
141 if (item != m_elapsedRegion.end())
142 {
143 auto elapsedAve = std::get<0>(item->second).count();
144 comm->AllReduce(elapsedAve, LibUtilities::ReduceSum);
145 elapsedAve /= comm->GetSize();
146 auto elapsedMin = std::get<0>(item->second).count();
147 comm->AllReduce(elapsedMin, LibUtilities::ReduceMin);
148 auto elapsedMax = std::get<0>(item->second).count();
149 comm->AllReduce(elapsedMax, LibUtilities::ReduceMax);
150
151 if (comm->GetRank() == 0)
152 {
153 o << std::setw(widths[0]) << item->first << std::setw(widths[1])
154 << elapsedAve << std::setw(widths[2]) << elapsedMin
155 << std::setw(widths[3]) << elapsedMax << std::setw(widths[4])
156 << std::get<1>(item->second) << std::setw(widths[5])
157 << std::get<2>(item->second) << '\n';
158 }
159 }
160
161 // Write all remaining timers, grouped by their IO Level
162 for (int i = 0; i <= iolevel; i++)
163 {
164 // Add a newline between each IO Level group
165 if (comm->GetRank() == 0)
166 o << "\n";
167
168 for (auto item = m_elapsedRegion.begin(); item != m_elapsedRegion.end();
169 ++item)
170 {
171 // Avoid writing the "Execute" timer twice
172 if (boost::iequals(item->first, "Execute"))
173 {
174 continue;
175 }
176
177 // Check if this timer has the correct IO Level
178 if (std::get<2>(item->second) == i)
179 {
180
181 auto elapsedAve = std::get<0>(item->second).count();
182 comm->AllReduce(elapsedAve, LibUtilities::ReduceSum);
183 elapsedAve /= comm->GetSize();
184 auto elapsedMin = std::get<0>(item->second).count();
185 comm->AllReduce(elapsedMin, LibUtilities::ReduceMin);
186 auto elapsedMax = std::get<0>(item->second).count();
187 comm->AllReduce(elapsedMax, LibUtilities::ReduceMax);
188
189 if (comm->GetRank() == 0)
190 {
191 o << std::setw(widths[0]) << item->first
192 << std::setw(widths[1]) << elapsedAve
193 << std::setw(widths[2]) << elapsedMin
194 << std::setw(widths[3]) << elapsedMax
195 << std::setw(widths[4]) << std::get<1>(item->second)
196 << std::setw(widths[5]) << std::get<2>(item->second)
197 << '\n';
198 }
199 }
200 }
201 }
202}

References CG_Iterations::label, m_elapsedRegion, Nektar::LibUtilities::ReduceMax, Nektar::LibUtilities::ReduceMin, and Nektar::LibUtilities::ReduceSum.

◆ Start()

void Nektar::LibUtilities::Timer::Start ( )

Definition at line 46 of file Timer.cpp.

47{
48 ASSERTL0(!m_isactive, "Call to Timer::Start() done when timer is active.");
49 m_isactive = true;
50 m_start = Clock::now();
51}

References ASSERTL0, m_isactive, and m_start.

Referenced by Nektar::CFSImplicit::AddMatNSBlkDiagBnd(), Nektar::SolverUtils::AdvectionWeakDG::AdvectCoeffs(), Nektar::SolverUtils::AdvectionWeakDG::AdvectTraceFlux(), Nektar::PulseWaveSystem::BifurcationRiemann(), Nektar::PyrCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::TriCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::CFSImplicit::CalcPreconMatBRJCoeff(), Nektar::SolverUtils::DiffusionIP::CalcTraceNumFlux(), Nektar::SolverUtils::DriverSteadyState::ConvergenceHistory(), Nektar::FieldUtils::Field::CreateExp(), Nektar::LibUtilities::NekLinSysIterGMRES::DoArnoldi(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::DoArnoldi(), Nektar::UnsteadyAdvection::DoOdeRhs(), Nektar::CompressibleFlowSystem::DoOdeRhs(), Nektar::PulseWavePropagation::DoOdeRhs(), Nektar::CFSImplicit::DoOdeRhsCoeff(), Nektar::SolverUtils::CouplingCwipi::DumpRawFields(), Nektar::PulseWaveSystem::EnforceInterfaceConditions(), Nektar::SolverUtils::DriverParallelInTime::EstimateCommunicationTime(), Nektar::LibUtilities::Interpreter::ExpressionEvaluator::Evaluate(), Nektar::LibUtilities::Interpreter::ExpressionEvaluator::EvaluateAtPoint(), Nektar::SolverUtils::CouplingCwipi::ExtrapolateFields(), Nektar::PulseWaveSystem::FillDataFromInterfacePoint(), Nektar::PulseWavePropagation::GetFluxVector(), Nektar::PulseWaveSystem::InterfaceRiemann(), main(), Nektar::PulseWaveSystem::MergingRiemann(), Nektar::PreconCfsBRJ::MinusOffDiag2Rhs(), Nektar::CFSImplicit::NonlinSysEvaluatorCoeff(), Nektar::CFSImplicit::PreconCoeff(), Nektar::SolverUtils::CouplingCwipi::ReceiveCwipi(), Nektar::SolverUtils::CouplingCwipi::ReceiveStart(), RunModule(), Nektar::SolverUtils::CouplingCwipi::SendComplete(), Nektar::PulseWavePropagation::SetPulseWaveBoundaryConditions(), Nektar::CoupledLinearNS::SetUpCoupledMatrix(), Nektar::Collections::CollectionOptimisation::SetWithTimings(), Nektar::CoupledLinearNS::SolveSteadyNavierStokes(), Nektar::MultiRegions::AssemblyCommDG::Timing(), Nektar::SolverUtils::AdvectionWeakDG::v_Advect(), Nektar::NavierStokesAdvection::v_Advect(), Nektar::MultiRegions::ExpList::v_BwdTrans(), Nektar::SolverUtils::DiffusionIP::v_Diffuse(), Nektar::SolverUtils::DiffusionIP::v_DiffuseCoeffs(), Nektar::SolverUtils::DiffusionIP::v_DiffuseTraceFlux(), Nektar::SolverUtils::DiffusionIP::v_DiffuseVolumeFlux(), Nektar::PreconCfsBRJ::v_DoPreconCfs(), Nektar::SolverUtils::UnsteadySystem::v_DoSolve(), Nektar::MMFAdvection::v_DoSolve(), Nektar::MMFMaxwell::v_DoSolve(), Nektar::PulseWaveSystem::v_DoSolve(), Nektar::MMFSWE::v_DoSolve(), Nektar::CoupledLinearNS::v_DoSolve(), Nektar::SolverUtils::DriverParareal::v_EstimateCoarseSolverTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateCoarseSolverTime(), Nektar::SolverUtils::DriverParareal::v_EstimateFineSolverTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateFineSolverTime(), Nektar::SolverUtils::DriverParareal::v_EstimateInterpolationTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateInterpolationTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateOverheadTime(), Nektar::SolverUtils::DriverPFASST::v_EstimatePredictorTime(), Nektar::SolverUtils::DriverParareal::v_EstimateRestrictionTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateRestrictionTime(), Nektar::VelocityCorrectionScheme::v_EvaluateAdvection_SetPressureBCs(), Nektar::VCSImplicit::v_EvaluateAdvection_SetPressureBCs(), Nektar::SolverUtils::DriverAdaptive::v_Execute(), Nektar::SolverUtils::DriverParareal::v_Execute(), Nektar::SolverUtils::DriverPFASST::v_Execute(), Nektar::SolverUtils::DriverStandard::v_Execute(), Nektar::SolverUtils::DriverSteadyState::v_Execute(), Nektar::MultiRegions::ExpList::v_IProductWRTDerivBase(), Nektar::SpatialDomains::MeshGraphHDF5::v_PartitionMesh(), Nektar::MultiRegions::ExpList::v_PhysDeriv(), Nektar::Dummy::v_PostIntegrate(), Nektar::FieldUtils::InputXml::v_Process(), Nektar::FieldUtils::ProcessCreateExp::v_Process(), Nektar::FieldUtils::ProcessIsoContour::v_Process(), Nektar::SolverUtils::CouplingCwipi::v_Send(), and Nektar::VelocityCorrectionScheme::v_SolveUnsteadyStokesSystem().

◆ Stop()

void Nektar::LibUtilities::Timer::Stop ( )

Definition at line 53 of file Timer.cpp.

54{
55 m_end = Clock::now();
56 ASSERTL0(m_isactive, "Call to Timer::Stop() done when timer is inactive.");
57 m_isactive = false;
58}

References ASSERTL0, m_end, and m_isactive.

Referenced by Nektar::CFSImplicit::AddMatNSBlkDiagBnd(), Nektar::SolverUtils::AdvectionWeakDG::AdvectCoeffs(), Nektar::SolverUtils::AdvectionWeakDG::AdvectTraceFlux(), Nektar::PulseWaveSystem::BifurcationRiemann(), Nektar::PyrCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::TriCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::CFSImplicit::CalcPreconMatBRJCoeff(), Nektar::SolverUtils::DiffusionIP::CalcTraceNumFlux(), Nektar::SolverUtils::DriverSteadyState::ConvergenceHistory(), Nektar::FieldUtils::Field::CreateExp(), Nektar::LibUtilities::NekLinSysIterGMRES::DoArnoldi(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::DoArnoldi(), Nektar::UnsteadyAdvection::DoOdeRhs(), Nektar::CompressibleFlowSystem::DoOdeRhs(), Nektar::PulseWavePropagation::DoOdeRhs(), Nektar::CFSImplicit::DoOdeRhsCoeff(), Nektar::SolverUtils::CouplingCwipi::DumpRawFields(), Nektar::PulseWaveSystem::EnforceInterfaceConditions(), Nektar::SolverUtils::DriverParallelInTime::EstimateCommunicationTime(), Nektar::LibUtilities::Interpreter::ExpressionEvaluator::Evaluate(), Nektar::LibUtilities::Interpreter::ExpressionEvaluator::EvaluateAtPoint(), Nektar::SolverUtils::CouplingCwipi::ExtrapolateFields(), Nektar::PulseWaveSystem::FillDataFromInterfacePoint(), Nektar::PulseWavePropagation::GetFluxVector(), Nektar::PulseWaveSystem::InterfaceRiemann(), main(), Nektar::PulseWaveSystem::MergingRiemann(), Nektar::PreconCfsBRJ::MinusOffDiag2Rhs(), Nektar::CFSImplicit::NonlinSysEvaluatorCoeff(), Nektar::CFSImplicit::PreconCoeff(), Nektar::SolverUtils::CouplingCwipi::ReceiveCwipi(), Nektar::SolverUtils::CouplingCwipi::ReceiveStart(), RunModule(), Nektar::SolverUtils::CouplingCwipi::SendComplete(), Nektar::PulseWavePropagation::SetPulseWaveBoundaryConditions(), Nektar::CoupledLinearNS::SetUpCoupledMatrix(), Nektar::Collections::CollectionOptimisation::SetWithTimings(), Nektar::CoupledLinearNS::SolveSteadyNavierStokes(), Nektar::MultiRegions::AssemblyCommDG::Timing(), Nektar::SolverUtils::AdvectionWeakDG::v_Advect(), Nektar::NavierStokesAdvection::v_Advect(), Nektar::MultiRegions::ExpList::v_BwdTrans(), Nektar::SolverUtils::DiffusionIP::v_Diffuse(), Nektar::SolverUtils::DiffusionIP::v_DiffuseCoeffs(), Nektar::SolverUtils::DiffusionIP::v_DiffuseTraceFlux(), Nektar::SolverUtils::DiffusionIP::v_DiffuseVolumeFlux(), Nektar::PreconCfsBRJ::v_DoPreconCfs(), Nektar::SolverUtils::UnsteadySystem::v_DoSolve(), Nektar::MMFAdvection::v_DoSolve(), Nektar::MMFMaxwell::v_DoSolve(), Nektar::PulseWaveSystem::v_DoSolve(), Nektar::MMFSWE::v_DoSolve(), Nektar::CoupledLinearNS::v_DoSolve(), Nektar::SolverUtils::DriverParareal::v_EstimateCoarseSolverTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateCoarseSolverTime(), Nektar::SolverUtils::DriverParareal::v_EstimateFineSolverTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateFineSolverTime(), Nektar::SolverUtils::DriverParareal::v_EstimateInterpolationTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateInterpolationTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateOverheadTime(), Nektar::SolverUtils::DriverPFASST::v_EstimatePredictorTime(), Nektar::SolverUtils::DriverParareal::v_EstimateRestrictionTime(), Nektar::SolverUtils::DriverPFASST::v_EstimateRestrictionTime(), Nektar::VelocityCorrectionScheme::v_EvaluateAdvection_SetPressureBCs(), Nektar::VCSImplicit::v_EvaluateAdvection_SetPressureBCs(), Nektar::SolverUtils::DriverAdaptive::v_Execute(), Nektar::SolverUtils::DriverParareal::v_Execute(), Nektar::SolverUtils::DriverPFASST::v_Execute(), Nektar::SolverUtils::DriverStandard::v_Execute(), Nektar::MultiRegions::ExpList::v_IProductWRTDerivBase(), Nektar::SpatialDomains::MeshGraphHDF5::v_PartitionMesh(), Nektar::MultiRegions::ExpList::v_PhysDeriv(), Nektar::Dummy::v_PostIntegrate(), Nektar::FieldUtils::InputXml::v_Process(), Nektar::FieldUtils::ProcessCreateExp::v_Process(), Nektar::FieldUtils::ProcessIsoContour::v_Process(), Nektar::SolverUtils::CouplingCwipi::v_Send(), and Nektar::VelocityCorrectionScheme::v_SolveUnsteadyStokesSystem().

◆ TimePerTest()

NekDouble Nektar::LibUtilities::Timer::TimePerTest ( unsigned int  n)

Member Data Documentation

◆ m_elapsedRegion

std::map< std::string, std::tuple< Timer::Seconds, size_t, int > > Nektar::LibUtilities::Timer::m_elapsedRegion {}
staticprivate

Definition at line 90 of file Timer.h.

Referenced by AccumulateRegion(), and PrintElapsedRegions().

◆ m_end

CounterType Nektar::LibUtilities::Timer::m_end = CounterType()
private

Definition at line 87 of file Timer.h.

Referenced by Elapsed(), and Stop().

◆ m_isactive

bool Nektar::LibUtilities::Timer::m_isactive = false
private

Definition at line 88 of file Timer.h.

Referenced by Elapsed(), Start(), and Stop().

◆ m_start

CounterType Nektar::LibUtilities::Timer::m_start = CounterType()
private

Definition at line 86 of file Timer.h.

Referenced by Elapsed(), and Start().