Commit 5d363e67 authored by Andrey Kamaev's avatar Andrey Kamaev

Tegra optimized cvRound; perf test for cvRound; fixed perf test for stitching

parent 3c9979cd
......@@ -259,6 +259,10 @@ enum {
* Common macros and inline functions *
\****************************************************************************************/
#ifdef HAVE_TEGRA_OPTIMIZATION
# include "tegra_round.hpp"
#endif
#define CV_PI 3.1415926535897932384626433832795
#define CV_LOG2 0.69314718055994530941723212145818
......@@ -300,7 +304,11 @@ CV_INLINE int cvRound( double value )
}
return t;
#elif defined HAVE_LRINT || defined CV_ICC || defined __GNUC__
# ifdef HAVE_TEGRA_OPTIMIZATION
TEGRA_ROUND(value);
# else
return (int)lrint(value);
# endif
#else
// while this is not IEEE754-compliant rounding, it's usually a good enough approximation
return (int)(value + (value >= 0 ? 0.5 : -0.5));
......
......@@ -62,3 +62,16 @@ PERF_TEST_P__CORE_ARITHM_SCALAR(subtract, TYPICAL_MATS_CORE_ARITHM)
PERF_TEST_P__CORE_ARITHM_SCALAR(absdiff, TYPICAL_MATS_CORE_ARITHM)
PERF_TEST(convert, cvRound)
{
double number = theRNG().uniform(-100, 100);
int result = 0;
TEST_CYCLE(1000)
{
for (int i = 0; i < 500000; ++i)
result += cvRound(number);
}
}
......@@ -19,12 +19,18 @@ PERF_TEST( stitch3, a123 )
imgs.push_back( imread( getDataPath("stitching/a2.jpg") ) );
imgs.push_back( imread( getDataPath("stitching/a3.jpg") ) );
Stitcher stitcher = Stitcher::createDefault();
Stitcher::Status status;
declare.time(30 * 20);
TEST_CYCLE(20) { status = stitcher.stitch(imgs, pano); }
while(next())
{
Stitcher stitcher = Stitcher::createDefault();
startTimer();
status = stitcher.stitch(imgs, pano);
stopTimer();
}
}
PERF_TEST( stitch2, b12 )
......@@ -35,10 +41,16 @@ PERF_TEST( stitch2, b12 )
imgs.push_back( imread( getDataPath("stitching/b1.jpg") ) );
imgs.push_back( imread( getDataPath("stitching/b2.jpg") ) );
Stitcher stitcher = Stitcher::createDefault();
Stitcher::Status status;
declare.time(30 * 20);
TEST_CYCLE(20) { status = stitcher.stitch(imgs, pano); }
while(next())
{
Stitcher stitcher = Stitcher::createDefault();
startTimer();
status = stitcher.stitch(imgs, pano);
stopTimer();
}
}
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