Commit cd492677 authored by Alexander Alekhin's avatar Alexander Alekhin

ts: fix perf calibation

properly handle "check" mode with:
"--perf_min_samples=1 --perf_force_samples=1"
parent ffd4a279
...@@ -25,7 +25,7 @@ using namespace cvtest; ...@@ -25,7 +25,7 @@ using namespace cvtest;
using namespace perf; using namespace perf;
int64 TestBase::timeLimitDefault = 0; int64 TestBase::timeLimitDefault = 0;
unsigned int TestBase::iterationsLimitDefault = (unsigned int)(-1); unsigned int TestBase::iterationsLimitDefault = UINT_MAX;
int64 TestBase::_timeadjustment = 0; int64 TestBase::_timeadjustment = 0;
// Item [0] will be considered the default implementation. // Item [0] will be considered the default implementation.
...@@ -1158,7 +1158,7 @@ void TestBase::Init(const std::vector<std::string> & availableImpls, ...@@ -1158,7 +1158,7 @@ void TestBase::Init(const std::vector<std::string> & availableImpls,
} }
timeLimitDefault = param_time_limit == 0.0 ? 1 : (int64)(param_time_limit * cv::getTickFrequency()); timeLimitDefault = param_time_limit == 0.0 ? 1 : (int64)(param_time_limit * cv::getTickFrequency());
iterationsLimitDefault = param_force_samples == 0 ? (unsigned)(-1) : param_force_samples; iterationsLimitDefault = param_force_samples == 0 ? UINT_MAX : param_force_samples;
_timeadjustment = _calibrate(); _timeadjustment = _calibrate();
} }
...@@ -1197,9 +1197,13 @@ enum PERF_STRATEGY TestBase::getCurrentModulePerformanceStrategy() ...@@ -1197,9 +1197,13 @@ enum PERF_STRATEGY TestBase::getCurrentModulePerformanceStrategy()
int64 TestBase::_calibrate() int64 TestBase::_calibrate()
{ {
CV_TRACE_FUNCTION(); CV_TRACE_FUNCTION();
if (iterationsLimitDefault <= 1)
return 0;
class _helper : public ::perf::TestBase class _helper : public ::perf::TestBase
{ {
public: public:
_helper() { testStrategy = PERF_STRATEGY_BASE; }
performance_metrics& getMetrics() { return calcMetrics(); } performance_metrics& getMetrics() { return calcMetrics(); }
virtual void TestBody() {} virtual void TestBody() {}
virtual void PerfTestBody() virtual void PerfTestBody()
...@@ -1210,13 +1214,17 @@ int64 TestBase::_calibrate() ...@@ -1210,13 +1214,17 @@ int64 TestBase::_calibrate()
cv::Mat b(2048, 2048, CV_32S, cv::Scalar(2)); cv::Mat b(2048, 2048, CV_32S, cv::Scalar(2));
declare.time(30); declare.time(30);
double s = 0; double s = 0;
for(declare.iterations(20); next() && startTimer(); stopTimer()) declare.iterations(20);
minIters = nIters = 20;
for(; next() && startTimer(); stopTimer())
s+=a.dot(b); s+=a.dot(b);
declare.time(s); declare.time(s);
//self calibration //self calibration
SetUp(); SetUp();
for(declare.iterations(1000); next() && startTimer(); stopTimer()){} declare.iterations(1000);
minIters = nIters = 1000;
for(int iters = 0; next() && startTimer(); iters++, stopTimer()) { /*std::cout << iters << nIters << std::endl;*/ }
} }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment