Merge pull request #6821 from sturkmen72:TickMeter_class_addition
This commit is contained in:
commit
a00f0c44ae
@ -251,7 +251,8 @@ CV_EXPORTS_W const String& getBuildInformation();
|
|||||||
|
|
||||||
The function returns the number of ticks after the certain event (for example, when the machine was
|
The function returns the number of ticks after the certain event (for example, when the machine was
|
||||||
turned on). It can be used to initialize RNG or to measure a function execution time by reading the
|
turned on). It can be used to initialize RNG or to measure a function execution time by reading the
|
||||||
tick count before and after the function call. See also the tick frequency.
|
tick count before and after the function call.
|
||||||
|
@sa getTickFrequency, TickMeter
|
||||||
*/
|
*/
|
||||||
CV_EXPORTS_W int64 getTickCount();
|
CV_EXPORTS_W int64 getTickCount();
|
||||||
|
|
||||||
@ -264,9 +265,126 @@ execution time in seconds:
|
|||||||
// do something ...
|
// do something ...
|
||||||
t = ((double)getTickCount() - t)/getTickFrequency();
|
t = ((double)getTickCount() - t)/getTickFrequency();
|
||||||
@endcode
|
@endcode
|
||||||
|
@sa getTickCount, TickMeter
|
||||||
*/
|
*/
|
||||||
CV_EXPORTS_W double getTickFrequency();
|
CV_EXPORTS_W double getTickFrequency();
|
||||||
|
|
||||||
|
/** @brief a Class to measure passing time.
|
||||||
|
|
||||||
|
The class computes passing time by counting the number of ticks per second. That is, the following code computes the
|
||||||
|
execution time in seconds:
|
||||||
|
@code
|
||||||
|
TickMeter tm;
|
||||||
|
tm.start();
|
||||||
|
// do something ...
|
||||||
|
tm.stop();
|
||||||
|
std::cout << tm.getTimeSec();
|
||||||
|
@endcode
|
||||||
|
@sa getTickCount, getTickFrequency
|
||||||
|
*/
|
||||||
|
|
||||||
|
class CV_EXPORTS_W TickMeter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! the default constructor
|
||||||
|
CV_WRAP TickMeter()
|
||||||
|
{
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
starts counting ticks.
|
||||||
|
*/
|
||||||
|
CV_WRAP void start()
|
||||||
|
{
|
||||||
|
startTime = cv::getTickCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
stops counting ticks.
|
||||||
|
*/
|
||||||
|
CV_WRAP void stop()
|
||||||
|
{
|
||||||
|
int64 time = cv::getTickCount();
|
||||||
|
if (startTime == 0)
|
||||||
|
return;
|
||||||
|
++counter;
|
||||||
|
sumTime += (time - startTime);
|
||||||
|
startTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
returns counted ticks.
|
||||||
|
*/
|
||||||
|
CV_WRAP int64 getTimeTicks() const
|
||||||
|
{
|
||||||
|
return sumTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
returns passed time in microseconds.
|
||||||
|
*/
|
||||||
|
CV_WRAP double getTimeMicro() const
|
||||||
|
{
|
||||||
|
return getTimeMilli()*1e3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
returns passed time in milliseconds.
|
||||||
|
*/
|
||||||
|
CV_WRAP double getTimeMilli() const
|
||||||
|
{
|
||||||
|
return getTimeSec()*1e3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
returns passed time in seconds.
|
||||||
|
*/
|
||||||
|
CV_WRAP double getTimeSec() const
|
||||||
|
{
|
||||||
|
return (double)getTimeTicks() / getTickFrequency();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
returns internal counter value.
|
||||||
|
*/
|
||||||
|
CV_WRAP int64 getCounter() const
|
||||||
|
{
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
resets internal values.
|
||||||
|
*/
|
||||||
|
CV_WRAP void reset()
|
||||||
|
{
|
||||||
|
startTime = 0;
|
||||||
|
sumTime = 0;
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int64 counter;
|
||||||
|
int64 sumTime;
|
||||||
|
int64 startTime;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** @brief output operator
|
||||||
|
@code
|
||||||
|
TickMeter tm;
|
||||||
|
tm.start();
|
||||||
|
// do something ...
|
||||||
|
tm.stop();
|
||||||
|
std::cout << tm;
|
||||||
|
@endcode
|
||||||
|
*/
|
||||||
|
|
||||||
|
static inline
|
||||||
|
std::ostream& operator << (std::ostream& out, const TickMeter& tm)
|
||||||
|
{
|
||||||
|
return out << tm.getTimeSec() << "sec";
|
||||||
|
}
|
||||||
|
|
||||||
/** @brief Returns the number of CPU ticks.
|
/** @brief Returns the number of CPU ticks.
|
||||||
|
|
||||||
The function returns the current number of CPU ticks on some architectures (such as x86, x64,
|
The function returns the current number of CPU ticks on some architectures (such as x86, x64,
|
||||||
|
@ -13,8 +13,6 @@
|
|||||||
#include "opencv2/cudaimgproc.hpp"
|
#include "opencv2/cudaimgproc.hpp"
|
||||||
#include "opencv2/cudawarping.hpp"
|
#include "opencv2/cudawarping.hpp"
|
||||||
|
|
||||||
#include "tick_meter.hpp"
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace cv;
|
using namespace cv;
|
||||||
using namespace cv::cuda;
|
using namespace cv::cuda;
|
||||||
|
@ -8,8 +8,6 @@
|
|||||||
#include "opencv2/cudaimgproc.hpp"
|
#include "opencv2/cudaimgproc.hpp"
|
||||||
#include "opencv2/highgui.hpp"
|
#include "opencv2/highgui.hpp"
|
||||||
|
|
||||||
#include "tick_meter.hpp"
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace cv;
|
using namespace cv;
|
||||||
|
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
#include "opencv2/imgproc.hpp"
|
#include "opencv2/imgproc.hpp"
|
||||||
#include "opencv2/cudastereo.hpp"
|
#include "opencv2/cudastereo.hpp"
|
||||||
|
|
||||||
#include "tick_meter.hpp"
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace cv;
|
using namespace cv;
|
||||||
using namespace cv::cuda;
|
using namespace cv::cuda;
|
||||||
|
@ -11,8 +11,6 @@
|
|||||||
#include "opencv2/superres/optical_flow.hpp"
|
#include "opencv2/superres/optical_flow.hpp"
|
||||||
#include "opencv2/opencv_modules.hpp"
|
#include "opencv2/opencv_modules.hpp"
|
||||||
|
|
||||||
#include "tick_meter.hpp"
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace cv;
|
using namespace cv;
|
||||||
using namespace cv::superres;
|
using namespace cv::superres;
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
#ifndef OPENCV_CUDA_SAMPLES_TICKMETER_
|
|
||||||
#define OPENCV_CUDA_SAMPLES_TICKMETER_
|
|
||||||
|
|
||||||
class CV_EXPORTS TickMeter
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TickMeter();
|
|
||||||
void start();
|
|
||||||
void stop();
|
|
||||||
|
|
||||||
int64 getTimeTicks() const;
|
|
||||||
double getTimeMicro() const;
|
|
||||||
double getTimeMilli() const;
|
|
||||||
double getTimeSec() const;
|
|
||||||
int64 getCounter() const;
|
|
||||||
|
|
||||||
void reset();
|
|
||||||
private:
|
|
||||||
int64 counter;
|
|
||||||
int64 sumTime;
|
|
||||||
int64 startTime;
|
|
||||||
};
|
|
||||||
|
|
||||||
std::ostream& operator << (std::ostream& out, const TickMeter& tm);
|
|
||||||
|
|
||||||
|
|
||||||
TickMeter::TickMeter() { reset(); }
|
|
||||||
int64 TickMeter::getTimeTicks() const { return sumTime; }
|
|
||||||
double TickMeter::getTimeMicro() const { return getTimeMilli()*1e3;}
|
|
||||||
double TickMeter::getTimeMilli() const { return getTimeSec()*1e3; }
|
|
||||||
double TickMeter::getTimeSec() const { return (double)getTimeTicks()/cv::getTickFrequency();}
|
|
||||||
int64 TickMeter::getCounter() const { return counter; }
|
|
||||||
void TickMeter::reset() {startTime = 0; sumTime = 0; counter = 0; }
|
|
||||||
|
|
||||||
void TickMeter::start(){ startTime = cv::getTickCount(); }
|
|
||||||
void TickMeter::stop()
|
|
||||||
{
|
|
||||||
int64 time = cv::getTickCount();
|
|
||||||
if ( startTime == 0 )
|
|
||||||
return;
|
|
||||||
++counter;
|
|
||||||
sumTime += ( time - startTime );
|
|
||||||
startTime = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::ostream& operator << (std::ostream& out, const TickMeter& tm) { return out << tm.getTimeSec() << "sec"; }
|
|
||||||
|
|
||||||
#endif
|
|
@ -14,8 +14,6 @@
|
|||||||
#include <opencv2/cudacodec.hpp>
|
#include <opencv2/cudacodec.hpp>
|
||||||
#include <opencv2/highgui.hpp>
|
#include <opencv2/highgui.hpp>
|
||||||
|
|
||||||
#include "tick_meter.hpp"
|
|
||||||
|
|
||||||
int main(int argc, const char* argv[])
|
int main(int argc, const char* argv[])
|
||||||
{
|
{
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
|
@ -11,8 +11,6 @@
|
|||||||
#include "opencv2/cudacodec.hpp"
|
#include "opencv2/cudacodec.hpp"
|
||||||
#include "opencv2/highgui.hpp"
|
#include "opencv2/highgui.hpp"
|
||||||
|
|
||||||
#include "tick_meter.hpp"
|
|
||||||
|
|
||||||
int main(int argc, const char* argv[])
|
int main(int argc, const char* argv[])
|
||||||
{
|
{
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user