Teuchos - Trilinos Tools Package Version of the Day
Classes | Namespaces | Defines | Typedefs
Teuchos_TimeMonitor.hpp File Reference

Scope protection wrapper for Teuchos::Time, with timer reporting functionality. More...

#include "Teuchos_ConfigDefs.hpp"
#include "Teuchos_Comm.hpp"
#include "Teuchos_PerformanceMonitorBase.hpp"
#include "Teuchos_Time.hpp"

Go to the source code of this file.

Classes

class  Teuchos::TimeMonitor
 A scope-safe timer wrapper class, that can compute global timer statistics. More...

Namespaces

namespace  Teuchos
 

The Teuchos namespace contains all of the classes, structs and enums used by Teuchos, as well as a number of utility routines.


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 Teuchos::Time, with timer reporting functionality.

An instance of 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.

TimeMonitor also has class methods that create or destroy timers (in such a way that it can track the complete set of created timers on each process) and compute global timer statistics.

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 73 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 84 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 any of various class methods, including summarize():

Definition at line 116 of file Teuchos_TimeMonitor.hpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines