cv::TickMeter class addition
This commit is contained in:
		| @@ -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) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Suleyman TURKMEN
					Suleyman TURKMEN