You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.9 KiB
143 lines
3.9 KiB
// ==================================================
|
|
// Copyright 2013.
|
|
// Siemens Product Lifecycle Management Software Inc.
|
|
// All Rights Reserved.
|
|
// ==================================================
|
|
|
|
/**
|
|
@file
|
|
|
|
This file contains definition for timer functions helper class.
|
|
*/
|
|
|
|
#ifndef BASE_UTILS_TIMER_HXX
|
|
#define BASE_UTILS_TIMER_HXX
|
|
|
|
#include <unidefs.h>
|
|
#include <base_utils/ScopedSmPtr.hxx>
|
|
|
|
#include <base_utils/libbase_utils_exports.h>
|
|
|
|
/**
|
|
Structure to capture the process times.
|
|
*/
|
|
typedef struct TIMER_CLOCK_timer_values_s
|
|
{
|
|
double cpu_time; /**< Total (User + System) time for this process */
|
|
double child_cpu_time; /**< Total (User + System) time for children processes */
|
|
double real_time; /**< Total elapsed time */
|
|
} TIMER_CLOCK_timer_values_t, *TIMER_CLOCK_timer_values_p_t;
|
|
|
|
/**
|
|
@brief A simple wrapper over the SYSS CLOCK timer functions.
|
|
|
|
@code
|
|
Timer t( true );
|
|
// do something
|
|
cerr << "something took " << t.elapsedString() << endl;
|
|
@endcode
|
|
*/
|
|
class BASE_UTILS_API Timer
|
|
{
|
|
public:
|
|
|
|
/**
|
|
Constructor.
|
|
*/
|
|
Timer(
|
|
logical startNow = true /**< (I) Specifies when the timer starts */
|
|
);
|
|
|
|
/**
|
|
Default destructor.
|
|
*/
|
|
~Timer();
|
|
|
|
/**
|
|
Starts timer.
|
|
*/
|
|
void start();
|
|
|
|
/**
|
|
Stops timer.
|
|
*/
|
|
void stop();
|
|
|
|
/**
|
|
Resets the timer.
|
|
|
|
@note This function does not stop the timer.
|
|
*/
|
|
void reset();
|
|
|
|
/**
|
|
Returns the elapsed time in seconds for both the real and cpu times ( e.g. "0.998000s cpu, 1.001000s real" ).
|
|
|
|
Returns the elapsed time in seconds for both the Central Processing Unit (CPU) and real times.
|
|
<br>The CPU time measures the amount of time for which a central processing unit (CPU) was used, while the real time includes the waiting time for input/output (I/O) operations or entering low-power (idle) mode.
|
|
<br>The output string is in the format "[d+]\.[d+]s cpu,[d+]\.[d+]s real", e.g. "0.998000s cpu, 1.001000s real".
|
|
|
|
@note Caller should store the returned value to another pointer because the returned pointer will be affected by the subsequent call made to this API.
|
|
*/
|
|
const char* elapsedString() const;
|
|
|
|
/**
|
|
Returns the timer values ( CPU, children CPU and real times ).
|
|
*/
|
|
void readTimer(
|
|
TIMER_CLOCK_timer_values_t& values /**< (OF) The output in #TIMER_CLOCK_timer_values_t structure */
|
|
) const;
|
|
|
|
/**
|
|
Constructs a string output for logging.
|
|
<br/>The output string is in the format ">> Global Timer [text], cpu & real, [d+]\.[d+],[d+]\.[d+]",
|
|
e.g. ">> Global Timer text, cpu & real, 0.999000, 1.001000".
|
|
|
|
@note Caller must the returned value by calling #MEM_free.
|
|
|
|
@code
|
|
char* str = aTimer.logElapsedString("aText");
|
|
Teamcenter::scoped_smptr< char > free_str ( str );
|
|
Teamcenter::Logging::Logger* aLogger =
|
|
Teamcenter::Logging::Logger::getLogger( "Teamcenter.CoreModelGeneral.tc" );
|
|
aLogger->printf( str );
|
|
@endcode
|
|
*/
|
|
char* logElapsedString(
|
|
const char* text /**< (I) The input text to add for logging */
|
|
) const;
|
|
|
|
/**
|
|
Checks if login timer is enabled, using "TC_LOGIN_TIMER" preference.
|
|
*/
|
|
static bool isLoginTimerEnabled();
|
|
|
|
private:
|
|
/** The time when the Timer instance was created */
|
|
unsigned short m_timer;
|
|
|
|
/**
|
|
Variable for timeString
|
|
*/
|
|
mutable char m_buffer[128];
|
|
|
|
/**
|
|
Private default constructor
|
|
*/
|
|
Timer( const Timer& other );
|
|
|
|
/**
|
|
Copy constructor
|
|
*/
|
|
Timer& operator=( const Timer& other );
|
|
|
|
static bool s_logEnabled;
|
|
static bool s_logEnabledChecked;
|
|
static double s_incrementalCpu;
|
|
static double s_incrementalReal;
|
|
};
|
|
|
|
#include <base_utils/libbase_utils_undef.h>
|
|
#endif
|
|
|