Tegra optimized cvRound; perf test for cvRound; fixed perf test for stitching
This commit is contained in:
parent
3c9979cd6a
commit
5d363e67a0
@ -259,6 +259,10 @@ enum {
|
|||||||
* Common macros and inline functions *
|
* Common macros and inline functions *
|
||||||
\****************************************************************************************/
|
\****************************************************************************************/
|
||||||
|
|
||||||
|
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||||
|
# include "tegra_round.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CV_PI 3.1415926535897932384626433832795
|
#define CV_PI 3.1415926535897932384626433832795
|
||||||
#define CV_LOG2 0.69314718055994530941723212145818
|
#define CV_LOG2 0.69314718055994530941723212145818
|
||||||
|
|
||||||
@ -300,7 +304,11 @@ CV_INLINE int cvRound( double value )
|
|||||||
}
|
}
|
||||||
return t;
|
return t;
|
||||||
#elif defined HAVE_LRINT || defined CV_ICC || defined __GNUC__
|
#elif defined HAVE_LRINT || defined CV_ICC || defined __GNUC__
|
||||||
|
# ifdef HAVE_TEGRA_OPTIMIZATION
|
||||||
|
TEGRA_ROUND(value);
|
||||||
|
# else
|
||||||
return (int)lrint(value);
|
return (int)lrint(value);
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
// while this is not IEEE754-compliant rounding, it's usually a good enough approximation
|
// while this is not IEEE754-compliant rounding, it's usually a good enough approximation
|
||||||
return (int)(value + (value >= 0 ? 0.5 : -0.5));
|
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_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/a2.jpg") ) );
|
||||||
imgs.push_back( imread( getDataPath("stitching/a3.jpg") ) );
|
imgs.push_back( imread( getDataPath("stitching/a3.jpg") ) );
|
||||||
|
|
||||||
Stitcher stitcher = Stitcher::createDefault();
|
|
||||||
Stitcher::Status status;
|
Stitcher::Status status;
|
||||||
|
|
||||||
declare.time(30 * 20);
|
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 )
|
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/b1.jpg") ) );
|
||||||
imgs.push_back( imread( getDataPath("stitching/b2.jpg") ) );
|
imgs.push_back( imread( getDataPath("stitching/b2.jpg") ) );
|
||||||
|
|
||||||
Stitcher stitcher = Stitcher::createDefault();
|
|
||||||
Stitcher::Status status;
|
Stitcher::Status status;
|
||||||
|
|
||||||
declare.time(30 * 20);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user