Teuchos Package Browser (Single Doxygen Collection) Version of the Day
Classes | Namespaces | Defines | Typedefs
Teuchos_TimeMonitor.hpp File Reference

Scope protection wrapper for a Teuchos::Time object. More...

#include "Teuchos_ConfigDefs.hpp"
#include "Teuchos_Comm.hpp"
#include "Teuchos_PerformanceMonitorBase.hpp"
#include "Teuchos_Time.hpp"
Include dependency graph for Teuchos_TimeMonitor.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Teuchos::TimeMonitor
 A scope-safe timer wrapper class. More...

Namespaces

namespace  Teuchos

Defines

#define TEUCHOS_TIMER(funcName, strName)
 Defines a static non-member function that returns a time monitor.
#define TEUCHOS_FUNC_TIME_MONITOR_DIFF(FUNCNAME, DIFF)
 Defines a timer for a specific function (with differentiator).
#define TEUCHOS_FUNC_TIME_MONITOR(FUNCNAME)   TEUCHOS_FUNC_TIME_MONITOR_DIFF( FUNCNAME, main )
 Defines a timer for a specific function.

Typedefs

typedef std::map< std::string,
std::vector< std::pair< double,
double > > > 
Teuchos::stat_map_type
 Global statistics collected from timer data.

Detailed Description

Scope protection wrapper for a Teuchos::Time object.

The TimeMonitor class wraps a nonconst reference to a Teuchos::Time timer object. TimeMonitor's constructor starts the timer, and its destructor stops the timer. This ensures scope safety of timers, so that no matter how a scope is exited (whether the normal way or when an exception is thrown), a timer started in the scope is stopped when the scope is left.

Definition in file Teuchos_TimeMonitor.hpp.


Define Documentation

#define TEUCHOS_TIMER (   funcName,
  strName 
)
Value:
static Teuchos::Time& funcName() \
  {static Teuchos::RCP<Time> rtn = \
      Teuchos::TimeMonitor::getNewCounter(strName); return *rtn;}

Defines a static non-member function that returns a time monitor.

Definition at line 69 of file Teuchos_TimeMonitor.hpp.

#define TEUCHOS_FUNC_TIME_MONITOR_DIFF (   FUNCNAME,
  DIFF 
)
Value:
static Teuchos::RCP<Teuchos::Time> DIFF ## blabla_localTimer; \
  if(!DIFF ## blabla_localTimer.get()) { \
    std::ostringstream oss; \
    oss << FUNCNAME; \
    DIFF ## blabla_localTimer = Teuchos::TimeMonitor::getNewCounter(oss.str()); \
  } \
  Teuchos::TimeMonitor DIFF ## blabla_localTimeMonitor(*DIFF ## blabla_localTimer)

Defines a timer for a specific function (with differentiator).

Same as TEUCHOS_FUNC_TIME_MONITOR(...) except required when used more than once in the same function (like a block of code).

Definition at line 80 of file Teuchos_TimeMonitor.hpp.

#define TEUCHOS_FUNC_TIME_MONITOR (   FUNCNAME)    TEUCHOS_FUNC_TIME_MONITOR_DIFF( FUNCNAME, main )

Defines a timer for a specific function.

Note that the name of the timer can be formated with stream inserts. For example, we can define a time monitor for a function as follows:

 template<typename Scalar>
 void foo()
 {
 TEUCHOS_FUNC_TIME_MONITOR(
 "foo<"<<Teuchos::ScalarTraits<Scalar>::name()<<">()"
 );
 ...
 }

The timer can then be printed at the end of the program using

Definition at line 117 of file Teuchos_TimeMonitor.hpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines