Tegra optimized cvRound; perf test for cvRound; fixed perf test for stitching
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user