timing.cpp
Go to the documentation of this file.
#ifndef _MSC_VER
# include <itpp/config.h>
#else
# include <itpp/config_msvc.h>
#endif
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <ctime>
#else
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <ctime>
# endif
#endif
#include <itpp/base/timing.h>
#include <cstdio>
#include <iostream>
#include <cmath>
#if defined(_WIN32) && !defined(__CYGWIN__)
#include <windows.h>
int gettimeofday(struct timeval* p, void*)
{
union {
long long ns100; /* time since 1 Jan 1601 in 100ns units */
FILETIME ft;
} _now;
GetSystemTimeAsFileTime(&(_now.ft));
p->tv_usec = (long)((_now.ns100 / 10LL) % 1000000LL);
/* time since 1 Jan 1970 */
p->tv_sec = (long)((_now.ns100 - 116444736000000000LL) / 10000000LL);
return 0;
}
#endif
namespace itpp
{
Real_Timer __tic_toc_timer;
//----------------------------------------------------------------------------
// class Timer
//----------------------------------------------------------------------------
Timer::Timer()
{
reset();
}
void Timer::start(void)
{
if (!running) {
start_time = get_current_time();
running = true;
}
}
double Timer::stop(void)
{
if (running) {
stop_time = get_current_time();
elapsed_time += stop_time - start_time;
running = false;
}
return elapsed_time;
}
void Timer::reset(double t)
{
elapsed_time = t;
start_time = 0;
stop_time = 0;
running = false;
}
double Timer::get_time() const
{
return running ?
elapsed_time + get_current_time() - start_time :
elapsed_time;
}
void Timer::tic(void)
{
reset();
start();
}
double Timer::toc(void)
{
return get_time() ;
}
void Timer::toc_print(void)
{
std::cout << "Elapsed time = " << get_time() << " seconds" << std::endl;
}
//----------------------------------------------------------------------------
// class CPU_Timer
//----------------------------------------------------------------------------
double CPU_Timer::get_current_time() const
{
return static_cast<double>(clock()) / CLOCKS_PER_SEC;
}
//----------------------------------------------------------------------------
// class Real_Timer
//----------------------------------------------------------------------------
double Real_Timer::get_current_time() const
{
struct timeval t;
gettimeofday(&t, 0);
return t.tv_sec + t.tv_usec * 1.0e-6;
}
void tic()
{
__tic_toc_timer.tic();
}
double toc()
{
return __tic_toc_timer.toc();
}
void toc_print()
{
__tic_toc_timer.toc_print();
}
void pause(double t)
{
if (t == -1) {
std::cout << "(Press enter to continue)" << std::endl;
getchar();
}
else {
Real_Timer T;
T.start();
while (T.get_time() < t);
}
}
} // namespace itpp
itpp::Timer::Timer
Timer()
Create a new timer. Sets the time to zero.
Definition: timing.cpp:80
itpp::Timer::get_time
double get_time() const
Returns the elapsed time.
Definition: timing.cpp:112
itpp::__tic_toc_timer
Real_Timer __tic_toc_timer
Global object for tic and toc functions.
Definition: timing.cpp:75
itpp::Timer::stop_time
double stop_time
The stop time of the timer.
Definition: timing.h:73
itpp::Timer::start
void start(void)
Start the timer. This does not set the time to zero.
Definition: timing.cpp:85
itpp::Timer::toc
double toc(void)
Returns the elapsed time since last tic()
Definition: timing.cpp:125
itpp::Real_Timer::get_current_time
double get_current_time() const
Vitrual function that returns teh current time.
Definition: timing.cpp:146
itpp::Timer::running
bool running
A bool that indicates if the timer is running or not.
Definition: timing.h:77
itpp::Timer::stop
double stop(void)
Stop the timer. Returns the elapsed time in seconds.
Definition: timing.cpp:93
itpp::Timer::start_time
double start_time
The start time of the timer.
Definition: timing.h:71
itpp
itpp namespace
Definition: itmex.h:36
itpp::Real_Timer
A real time timer classMeasures real time.
Definition: timing.h:138
itpp::Timer::elapsed_time
double elapsed_time
The ellapsed time from start to stop.
Definition: timing.h:75
itpp::Timer::reset
void reset(double t=0.0)
Sets the time to time t, which is zero by default. Stops the timer if it is running.
Definition: timing.cpp:104
itpp::Timer::get_current_time
virtual double get_current_time() const =0
Vitrual function that returns teh current time.
itpp::CPU_Timer::get_current_time
double get_current_time() const
Vitrual function that returns teh current time.
Definition: timing.cpp:138
itpp::pause
void pause(double t)
pause
Definition: timing.cpp:169
itpp::Timer::toc_print
void toc_print(void)
Prints the elapsed time since last tic()
Definition: timing.cpp:130
itpp::Timer::tic
void tic(void)
Resets the timer and starts it.
Definition: timing.cpp:119
timing.h
Definitions of Timing classes.

Generated on Sat Sep 30 2017 07:04:09 for IT++ by Doxygen 1.8.13