Added perf tests for cv::compare
authorAndrey Kamaev <no@email>
Mon, 26 Dec 2011 11:30:56 +0000 (11:30 +0000)
committerAndrey Kamaev <no@email>
Mon, 26 Dec 2011 11:30:56 +0000 (11:30 +0000)
modules/core/perf/perf_compare.cpp [new file with mode: 0644]

diff --git a/modules/core/perf/perf_compare.cpp b/modules/core/perf/perf_compare.cpp
new file mode 100644 (file)
index 0000000..32f8886
--- /dev/null
@@ -0,0 +1,62 @@
+#include "perf_precomp.hpp"
+
+using namespace std;
+using namespace cv;
+using namespace perf;
+
+CV_ENUM(CmpType, CMP_EQ, CMP_GT, CMP_GE, CMP_LT, CMP_LE, CMP_NE)
+
+typedef std::tr1::tuple<Size, MatType, CmpType> Size_MatType_CmpType_t;
+typedef perf::TestBaseWithParam<Size_MatType_CmpType_t> Size_MatType_CmpType;
+
+PERF_TEST_P( Size_MatType_CmpType, compare,
+    testing::Combine(
+        testing::Values( TYPICAL_MAT_SIZES ),
+        testing::Values( CV_8UC1, CV_8UC4, CV_8SC1, CV_16UC1, CV_16SC1, CV_32SC1, CV_32FC1 ),
+        testing::ValuesIn( CmpType::all() )
+    )
+)
+{
+    Size sz = std::tr1::get<0>(GetParam());
+    int matType1 = std::tr1::get<1>(GetParam());
+    CmpType cmpType = std::tr1::get<2>(GetParam());
+
+    Mat src1(sz, matType1);
+    Mat src2(sz, matType1);
+    Mat dst(sz, CV_8UC(CV_MAT_CN(matType1)));
+
+    declare.in(src1, src2, WARMUP_RNG).out(dst);
+
+    TEST_CYCLE(100)
+    {
+        cv::compare(src1, src2, dst, cmpType);
+    }
+
+    SANITY_CHECK(dst);
+}
+
+PERF_TEST_P( Size_MatType_CmpType, compareScalar,
+    testing::Combine(
+        testing::Values( TYPICAL_MAT_SIZES ),
+        testing::Values( TYPICAL_MAT_TYPES ),
+        testing::ValuesIn( CmpType::all() )
+    )
+)
+{
+    Size sz = std::tr1::get<0>(GetParam());
+    int matType = std::tr1::get<1>(GetParam());
+    CmpType cmpType = std::tr1::get<2>(GetParam());
+
+    Mat src1(sz, matType);
+    Scalar src2;
+    Mat dst(sz, CV_8UC(CV_MAT_CN(matType)));
+
+    declare.in(src1, src2, WARMUP_RNG).out(dst);
+
+    TEST_CYCLE(100)
+    {
+        cv::compare(src1, src2, dst, cmpType);
+    }
+
+    SANITY_CHECK(dst);
+}