Commit 8f35b572 authored by Alexey Spizhevoy's avatar Alexey Spizhevoy

added performance tests for log, exp, add, magnitude

parent 1c9ad08d
...@@ -123,7 +123,7 @@ void gen(Mat& mat, int rows, int cols, int type, Scalar low, Scalar high) ...@@ -123,7 +123,7 @@ void gen(Mat& mat, int rows, int cols, int type, Scalar low, Scalar high)
string abspath(const string& relpath) string abspath(const string& relpath)
{ {
return TestSystem::instance()->workingDir() + relpath; return TestSystem::instance().workingDir() + relpath;
} }
...@@ -131,7 +131,7 @@ int CV_CDECL cvErrorCallback(int /*status*/, const char* /*func_name*/, ...@@ -131,7 +131,7 @@ int CV_CDECL cvErrorCallback(int /*status*/, const char* /*func_name*/,
const char* err_msg, const char* /*file_name*/, const char* err_msg, const char* /*file_name*/,
int /*line*/, void* /*userdata*/) int /*line*/, void* /*userdata*/)
{ {
TestSystem::instance()->printError(err_msg); TestSystem::instance().printError(err_msg);
return 0; return 0;
} }
...@@ -144,11 +144,11 @@ int main(int argc, char** argv) ...@@ -144,11 +144,11 @@ int main(int argc, char** argv)
} }
else else
{ {
TestSystem::instance()->setWorkingDir(argv[1]); TestSystem::instance().setWorkingDir(argv[1]);
} }
redirectError(cvErrorCallback); redirectError(cvErrorCallback);
TestSystem::instance()->run(); TestSystem::instance().run();
return 0; return 0;
} }
\ No newline at end of file
...@@ -26,10 +26,10 @@ private: ...@@ -26,10 +26,10 @@ private:
class TestSystem class TestSystem
{ {
public: public:
static TestSystem* instance() static TestSystem& instance()
{ {
static TestSystem me; static TestSystem me;
return &me; return me;
} }
void addInit(Runnable* init) { inits_.push_back(init); } void addInit(Runnable* init) { inits_.push_back(init); }
...@@ -106,10 +106,9 @@ private: ...@@ -106,10 +106,9 @@ private:
#define INIT(name) \ #define INIT(name) \
struct name##_init: Runnable \ struct name##_init: Runnable { \
{ \
name##_init(): Runnable(#name) { \ name##_init(): Runnable(#name) { \
TestSystem::instance()->addInit(this); \ TestSystem::instance().addInit(this); \
} \ } \
void run(); \ void run(); \
} name##_init_instance; \ } name##_init_instance; \
...@@ -117,21 +116,20 @@ private: ...@@ -117,21 +116,20 @@ private:
#define TEST(name) \ #define TEST(name) \
struct name##_test: Runnable \ struct name##_test: Runnable { \
{ \
name##_test(): Runnable(#name) { \ name##_test(): Runnable(#name) { \
TestSystem::instance()->addTest(this); \ TestSystem::instance().addTest(this); \
} \ } \
void run(); \ void run(); \
} name##_test_instance; \ } name##_test_instance; \
void name##_test::run() void name##_test::run()
#define SUBTEST TestSystem::instance()->subtest() #define SUBTEST TestSystem::instance().subtest()
#define DESCRIPTION TestSystem::instance()->subtest() #define DESCRIPTION TestSystem::instance().subtest()
#define CPU_ON TestSystem::instance()->cpuOn() #define CPU_ON TestSystem::instance().cpuOn()
#define GPU_ON TestSystem::instance()->gpuOn() #define GPU_ON TestSystem::instance().gpuOn()
#define CPU_OFF TestSystem::instance()->cpuOff() #define CPU_OFF TestSystem::instance().cpuOff()
#define GPU_OFF TestSystem::instance()->gpuOff() #define GPU_OFF TestSystem::instance().gpuOff()
void gen(cv::Mat& mat, int rows, int cols, int type, cv::Scalar low, void gen(cv::Mat& mat, int rows, int cols, int type, cv::Scalar low,
cv::Scalar high); cv::Scalar high);
......
...@@ -332,4 +332,112 @@ TEST(BruteForceMatcher) ...@@ -332,4 +332,112 @@ TEST(BruteForceMatcher)
GPU_ON; GPU_ON;
d_matcher.radiusMatch(d_query, d_train, d_matches, max_distance); d_matcher.radiusMatch(d_query, d_train, d_matches, max_distance);
GPU_OFF; GPU_OFF;
}
TEST(magnitude)
{
Mat x, y, mag;
gpu::GpuMat d_x, d_y, d_mag;
for (int size = 2000; size <= 4000; size += 1000)
{
SUBTEST << "size " << size;
gen(x, size, size, CV_32F, 0, 1);
gen(y, size, size, CV_32F, 0, 1);
mag.create(size, size, CV_32F);
CPU_ON;
magnitude(x, y, mag);
CPU_OFF;
d_x = x;
d_y = y;
d_mag.create(size, size, CV_32F);
GPU_ON;
gpu::magnitude(d_x, d_y, d_mag);
GPU_OFF;
}
}
TEST(add)
{
Mat src1, src2, dst;
gpu::GpuMat d_src1, d_src2, d_dst;
for (int size = 2000; size <= 4000; size += 1000)
{
SUBTEST << "size " << size << ", 32F";
gen(src1, size, size, CV_32F, 0, 1);
gen(src2, size, size, CV_32F, 0, 1);
dst.create(size, size, CV_32F);
CPU_ON;
add(src1, src2, dst);
CPU_OFF;
d_src1 = src1;
d_src2 = src2;
d_dst.create(size, size, CV_32F);
GPU_ON;
gpu::add(d_src1, d_src2, d_dst);
GPU_OFF;
}
}
TEST(log)
{
Mat src, dst;
gpu::GpuMat d_src, d_dst;
for (int size = 2000; size <= 4000; size += 1000)
{
SUBTEST << "size " << size << ", 32F";
gen(src, size, size, CV_32F, 1, 10);
dst.create(size, size, CV_32F);
CPU_ON;
log(src, dst);
CPU_OFF;
d_src = src;
d_dst.create(size, size, CV_32F);
GPU_ON;
gpu::log(d_src, d_dst);
GPU_OFF;
}
}
TEST(exp)
{
Mat src, dst;
gpu::GpuMat d_src, d_dst;
for (int size = 2000; size <= 4000; size += 1000)
{
SUBTEST << "size " << size << ", 32F";
gen(src, size, size, CV_32F, 0, 1);
dst.create(size, size, CV_32F);
CPU_ON;
exp(src, dst);
CPU_OFF;
d_src = src;
d_dst.create(size, size, CV_32F);
GPU_ON;
gpu::exp(d_src, d_dst);
GPU_OFF;
}
} }
\ No newline at end of file
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