~Timer();
void start();
void stop();
- float milliSeconds();
- float microSeconds();
- float seconds();
+
+ uint64 durationNS() const; //< duration in nanoseconds
protected:
struct Impl;
- Impl* p;
+ Impl* const p;
+
+private:
+ Timer(const Timer&); // disabled
+ Timer& operator=(const Timer&); // disabled
};
CV_EXPORTS MatAllocator* getOpenCLAllocator();
#endif
}
- float microSeconds()
+ uint64 durationNS() const
{
#ifdef HAVE_OPENCL
- return (float)timer.getTimeMicro();
+ return (uint64)(timer.getTimeSec() * 1e9);
#else
return 0;
#endif
}
- float milliSeconds()
- {
-#ifdef HAVE_OPENCL
- return (float)timer.getTimeMilli();
-#else
- return 0;
-#endif
- }
-
- float seconds()
- {
-#ifdef HAVE_OPENCL
- return (float)timer.getTimeSec();
-#else
- return 0;
-#endif
- }
TickMeter timer;
};
-Timer::Timer(const Queue& q)
-{
- p = new Impl(q);
-}
-
-Timer::~Timer()
-{
- if(p)
- {
- delete p;
- p = 0;
- }
-}
+Timer::Timer(const Queue& q) : p(new Impl(q)) { }
+Timer::~Timer() { delete p; }
void Timer::start()
{
- if(p)
- p->start();
+ CV_Assert(p);
+ p->start();
}
void Timer::stop()
{
- if(p)
- p->stop();
+ CV_Assert(p);
+ p->stop();
}
-float Timer::microSeconds()
-{ return p ? p->microSeconds() : 0; }
-
-float Timer::milliSeconds()
-{ return p ? p->milliSeconds() : 0; }
-
-float Timer::seconds()
-{ return p ? p->seconds() : 0; }
+uint64 Timer::durationNS() const
+{
+ CV_Assert(p);
+ return p->durationNS();
+}
-}}
+}} // namespace
return 1e5;
}
- float elapsedTime = timer.milliSeconds() / loop_cnt;
+ float elapsedTime = timer.durationNS() * 1e-6 / loop_cnt;
#ifdef dbg
double out_w = output_w_;
double out_h = output_h_;
double k_h = kernel_h_;
double k_z = channels_;
double totalFlops = ((k_w*k_h*k_z -1)*2)*(out_w*out_h*out_z)*num_;
- std::cout << "\tEstimated Gflops:" << ((totalFlops/1000)/1000)/1000
+ std::cout << "\tEstimated Gflops:" << (totalFlops * 1e-9)
<< std::endl;
- std::cout << "\tEstimated GFLOPS/S: " << (((totalFlops/1000)/1000)/1000)*(1000.0/elapsedTime)
+ std::cout << "\tEstimated GFLOPS/S: " << ((totalFlops * 1e-9)*(1000.0/elapsedTime))
<< std::endl;
#if 0
std::cout << "Estimated utilization: " <<