Merge pull request #6821 from sturkmen72:TickMeter_class_addition

pull/6904/head
Maksim Shabunin 8 years ago
commit a00f0c44ae
  1. 120
      modules/core/include/opencv2/core/utility.hpp
  2. 2
      samples/gpu/cascadeclassifier.cpp
  3. 2
      samples/gpu/generalized_hough.cpp
  4. 2
      samples/gpu/stereo_multi.cpp
  5. 2
      samples/gpu/super_resolution.cpp
  6. 48
      samples/gpu/tick_meter.hpp
  7. 2
      samples/gpu/video_reader.cpp
  8. 2
      samples/gpu/video_writer.cpp

@ -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…
Cancel
Save