added minMaxLoc performance tests

This commit is contained in:
Alexey Spizhevoy 2011-01-25 08:32:45 +00:00
parent 6b4047eb46
commit 8644c6f86b
3 changed files with 46 additions and 16 deletions

View File

@ -33,9 +33,8 @@ void TestSystem::run()
}
cout << setiosflags(ios_base::fixed | ios_base::left);
cout << "\nCPU Total: " << setprecision(3) << cpu_total_ / getTickFrequency() << " sec\n";
cout << "GPU Total: " << setprecision(3) << gpu_total_ / getTickFrequency() << " sec (x"
<< setprecision(3) << static_cast<double>(cpu_total_) / gpu_total_ << ")\n";
cout << "\nAverage GPU Speedup: x" << setprecision(3)
<< speedup_total_ / num_subtests_called_ << endl;
cout << resetiosflags(ios_base::fixed | ios_base::left);
}
@ -47,7 +46,9 @@ void TestSystem::flush()
int cpu_time = static_cast<int>(cpu_elapsed_ / getTickFrequency() * 1000.0);
int gpu_time = static_cast<int>(gpu_elapsed_ / getTickFrequency() * 1000.0);
double speedup = static_cast<double>(cpu_time) / gpu_time;
speedup_total_ += speedup;
cpu_elapsed_ = 0;
gpu_elapsed_ = 0;
@ -72,6 +73,7 @@ void TestSystem::flush()
cout << resetiosflags(ios_base::fixed | ios_base::left) << endl;
can_flush_ = false;
num_subtests_called_++;
}

View File

@ -42,7 +42,6 @@ public:
{
int64 delta = cv::getTickCount() - cpu_started_;
cpu_elapsed_ += delta;
cpu_total_ += delta;
can_flush_ = true;
}
@ -52,7 +51,6 @@ public:
{
int64 delta = cv::getTickCount() - gpu_started_;
gpu_elapsed_ += delta;
gpu_total_ += delta;
can_flush_ = true;
}
@ -64,9 +62,8 @@ public:
}
private:
TestSystem(): can_flush_(false),
cpu_elapsed_(0), cpu_total_(0),
gpu_elapsed_(0), gpu_total_(0) {};
TestSystem(): can_flush_(false), cpu_elapsed_(0), gpu_elapsed_(0),
speedup_total_(0.0), num_subtests_called_(0) {};
void flush();
@ -77,8 +74,11 @@ private:
bool can_flush_;
int64 cpu_started_, cpu_elapsed_, cpu_total_;
int64 gpu_started_, gpu_elapsed_, gpu_total_;
int64 cpu_started_, cpu_elapsed_;
int64 gpu_started_, gpu_elapsed_;
double speedup_total_;
int num_subtests_called_;
};

View File

@ -7,24 +7,52 @@ using namespace cv;
TEST(matchTemplate)
{
Mat image, templ, result;
gen(image, 3000, 3000, CV_8U);
gpu::GpuMat d_image(image), d_templ, d_result;
for (int templ_size = 5; templ_size <= 1000; templ_size *= 2)
{
SUBTEST << "img 3000, templ " << templ_size << ", 8U, SQDIFF";
Mat image; gen(image, 3000, 3000, CV_8U);
Mat templ; gen(templ, templ_size, templ_size, CV_8U);
Mat result;
gen(templ, templ_size, templ_size, CV_8U);
CPU_ON;
matchTemplate(image, templ, result, CV_TM_SQDIFF);
CPU_OFF;
gpu::GpuMat d_image(image);
gpu::GpuMat d_templ(templ);
gpu::GpuMat d_result;
d_templ = templ;
GPU_ON;
gpu::matchTemplate(d_image, d_templ, d_result, CV_TM_SQDIFF);
GPU_OFF;
}
}
TEST(minMaxLoc)
{
Mat src;
gpu::GpuMat d_src;
double min_val, max_val;
Point min_loc, max_loc;
for (int size = 2000; size <= 8000; size *= 2)
{
SUBTEST << "img " << size << ", 32F, no mask";
gen(src, size, size, CV_32F);
CPU_ON;
minMaxLoc(src, &min_val, &max_val, &min_loc, &max_loc);
CPU_OFF;
d_src = src;
GPU_ON;
gpu::minMaxLoc(d_src, &min_val, &max_val, &min_loc, &max_loc);
GPU_OFF;
}
}