diff --git a/source/RobotAPI/libraries/core/test/TrajectoryTest.cpp b/source/RobotAPI/libraries/core/test/TrajectoryTest.cpp index 68b3b520837379c72d92275caa15cfc6772e30d8..b657d0f3a8d9a93c1a6856db492172bab695a521 100644 --- a/source/RobotAPI/libraries/core/test/TrajectoryTest.cpp +++ b/source/RobotAPI/libraries/core/test/TrajectoryTest.cpp @@ -133,7 +133,7 @@ BOOST_AUTO_TEST_CASE(TrajectoryPerformanceTest) int count = 1000; for (int i = 0; i < count; ++i) { - timestamps.push_back(rand()); + timestamps.push_back(i); } TrajectoryPtr traj(new Trajectory()); for (int var = 0; var < 8; ++var) @@ -158,6 +158,31 @@ BOOST_AUTO_TEST_CASE(TrajectoryPerformanceTest) ARMARX_INFO_S << "Unmarshalled"; traj->getLength(); ARMARX_INFO_S << "Length calculated"; + IceUtil::Time start = IceUtil::Time::now(); + float dummyVar = 0; + int dims = traj->dim(); + for (const Trajectory::TrajData& data : *traj) + { + for (int d = 0; d < dims; ++d) + { + dummyVar += data.getPosition(d); + } + } + IceUtil::Time end = IceUtil::Time::now(); + ARMARX_INFO << "time per iteration in microseconds: " << (end - start).toMicroSecondsDouble() / traj->size(); + int iterationCount = 0; + start = IceUtil::Time::now(); + for (float t = 0; t < 1000; t += 0.32) + { + for (int d = 0; d < dims; ++d) + { + dummyVar += traj->getState(t, d); + } + iterationCount++; + } + end = IceUtil::Time::now(); + ARMARX_INFO << "time per iteration with interpolation in microseconds: " << (end - start).toMicroSecondsDouble() / iterationCount; + ARMARX_INFO << VAROUT(dummyVar); BOOST_CHECK_EQUAL(traj->getState(0), traj2->getState(0)); }