32 #include <gtest/gtest.h> 40 std::srand(std::time(0));
43 void generate_rand_vectors(
double scale, uint64_t runs, std::vector<double>& xvalues, std::vector<double>& yvalues, std::vector<double>&zvalues)
46 for ( uint64_t i = 0; i < runs ; i++ )
48 xvalues[i] = 1.0 * ((double) std::rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX;
49 yvalues[i] = 1.0 * ((double) std::rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX;
50 zvalues[i] = 1.0 * ((double) std::rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX;
58 TEST(tf_benchmark, canTransformCacheLength0)
62 uint64_t runs = 100000;
67 for (uint64_t i = 0 ; i < runs; i++)
72 double frequency = (double)runs / run_duration.
toSec() ;
73 printf(
"can frequency %.2f KHz\n", frequency / 1000.0);
74 EXPECT_GT( frequency, 10000.0);
78 TEST(tf_benchmark, canTransformCacheLength10000)
82 unsigned int cache_length = 10000;
83 for (
unsigned int i = 0; i < cache_length; i++)
89 uint64_t runs = 100000;
95 for (uint64_t i = 0 ; i < runs; i++)
100 double frequency = (double)runs / run_duration.
toSec() ;
101 printf(
"Worst Case Frequency %.2f KHz\n", frequency / 1000.0);
102 EXPECT_GT( frequency, 10000.0);
106 for (uint64_t i = 0 ; i < runs; i++)
111 frequency = (double)runs / run_duration.
toSec() ;
112 printf(
"Intermediate Case Frequency %.2f KHz\n", frequency / 1000.0);
113 EXPECT_GT( frequency, 10000.0);
117 for (uint64_t i = 0 ; i < runs; i++)
122 frequency = (double)runs / run_duration.
toSec() ;
123 printf(
"Best Case Frequency %.2f KHz\n", frequency / 1000.0);
124 EXPECT_GT( frequency, 10000.0);
127 TEST(tf_benchmark, lookupTransformCacheLength10000)
131 unsigned int cache_length = 10000;
132 for (
unsigned int i = 0; i < cache_length; i++)
138 uint64_t runs = 100000;
144 for (uint64_t i = 0 ; i < runs; i++)
149 double frequency = (double)runs / run_duration.
toSec() ;
150 printf(
"Worst Case Lookup Frequency %.2f KHz\n", frequency / 1000.0);
151 EXPECT_GT( frequency, 10000.0);
155 for (uint64_t i = 0 ; i < runs; i++)
160 frequency = (double)runs / run_duration.
toSec() ;
161 printf(
"Intermediate Case Lookup Frequency %.2f KHz\n", frequency / 1000.0);
162 EXPECT_GT( frequency, 10000.0);
166 for (uint64_t i = 0 ; i < runs; i++)
171 frequency = (double)runs / run_duration.
toSec() ;
172 printf(
"Best Case Lookup Frequency %.2f KHz\n", frequency / 1000.0);
173 EXPECT_GT( frequency, 10000.0);
176 TEST(tf_benchmark, benchmarkExhaustiveSearch)
178 uint64_t runs = 40000;
183 std::vector<double> xvalues(runs), yvalues(runs), zvalues(runs);
184 for ( uint64_t i = 0; i < runs ; i++ )
186 xvalues[i] = 10.0 * ((double) std::rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX;
187 yvalues[i] = 10.0 * ((double) std::rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX;
188 zvalues[i] = 10.0 * ((double) std::rand() - (double)RAND_MAX /2.0) /(double)RAND_MAX;
195 for ( uint64_t i = 0; i < runs ; i++ )
202 outpose.setIdentity();
204 EXPECT_NEAR(outpose.getOrigin().x(), xvalues[i],
epsilon);
205 EXPECT_NEAR(outpose.getOrigin().y(), yvalues[i],
epsilon);
206 EXPECT_NEAR(outpose.getOrigin().z(), zvalues[i],
epsilon);
210 std::cout <<
"TransformExcepion got through!!!!! " << ex.what() << std::endl;
211 bool exception_improperly_thrown =
true;
212 EXPECT_FALSE(exception_improperly_thrown);
218 outpose.setIdentity();
220 EXPECT_NEAR(outpose.getOrigin().x(), 0,
epsilon);
221 EXPECT_NEAR(outpose.getOrigin().y(), 0,
epsilon);
222 EXPECT_NEAR(outpose.getOrigin().z(), 0,
epsilon);
225 double frequency = (double)runs / run_duration.
toSec() ;
226 printf(
"exhaustive search frequency %.2f KHz\n", frequency / 1000.0);
227 EXPECT_GT( frequency, 500.0);
231 int main(
int argc,
char **argv){
233 testing::InitGoogleTest(&argc, argv);
234 return RUN_ALL_TESTS();
The Quaternion implements quaternion to perform linear algebra rotations in combination with Matrix3x...
Time & fromNSec(uint64_t t)
int main(int argc, char **argv)
TEST(tf_benchmark, canTransformCacheLength0)
void generate_rand_vectors(double scale, uint64_t runs, std::vector< double > &xvalues, std::vector< double > &yvalues, std::vector< double > &zvalues)