Skip to content
Snippets Groups Projects
Commit ba7dae2d authored by Carlos Mastalli's avatar Carlos Mastalli
Browse files

[benchmark] Added times in milliseconds

parent d0694fd9
No related branches found
No related tags found
No related merge requests found
...@@ -40,17 +40,52 @@ int main() { ...@@ -40,17 +40,52 @@ int main() {
} }
// Solving the optimal control problem // Solving the optimal control problem
std::clock_t c_start, c_end; struct timespec start, finish;
double elapsed;
Eigen::ArrayXd duration(T); Eigen::ArrayXd duration(T);
for (unsigned int i = 0; i < T; ++i) { for (unsigned int i = 0; i < T; ++i) {
c_start = std::clock(); clock_gettime(CLOCK_MONOTONIC, &start);
ddp.solve(xs, us, MAXITER); ddp.solve(xs, us, MAXITER);
c_end = std::clock(); clock_gettime(CLOCK_MONOTONIC, &finish);
duration[i] = 1e3 * (double)(c_end - c_start) / CLOCKS_PER_SEC; elapsed = (finish.tv_sec - start.tv_sec) * 1000000.0;
elapsed += (finish.tv_nsec - start.tv_nsec) / 1000.0;
duration[i] = elapsed / 1000.;
} }
double avrg_duration = duration.sum() / T; double avrg_duration = duration.sum() / T;
double min_duration = duration.minCoeff(); double min_duration = duration.minCoeff();
double max_duration = duration.maxCoeff(); double max_duration = duration.maxCoeff();
std::cout << "CPU time [ms]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")" << std::endl; std::cout << "Wall time [mu]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")" << std::endl;
// Running calc
for (unsigned int i = 0; i < T; ++i) {
clock_gettime(CLOCK_MONOTONIC, &start);
problem.calc(xs, us);
clock_gettime(CLOCK_MONOTONIC, &finish);
elapsed = (finish.tv_sec - start.tv_sec) * 1000000.0;
elapsed += (finish.tv_nsec - start.tv_nsec) / 1000.0;
duration[i] = elapsed / 1000.;
}
avrg_duration = duration.sum() / T;
min_duration = duration.minCoeff();
max_duration = duration.maxCoeff();
std::cout << "Wall time calc [ms]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")"
<< std::endl;
// Running calcDiff
for (unsigned int i = 0; i < T; ++i) {
clock_gettime(CLOCK_MONOTONIC, &start);
problem.calcDiff(xs, us);
clock_gettime(CLOCK_MONOTONIC, &finish);
elapsed = (finish.tv_sec - start.tv_sec) * 1000000.0;
elapsed += (finish.tv_nsec - start.tv_nsec) / 1000.0;
duration[i] = elapsed / 1000.;
}
avrg_duration = duration.sum() / T;
min_duration = duration.minCoeff();
max_duration = duration.maxCoeff();
std::cout << "Wall time calcDiff [ms]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")"
<< std::endl;
} }
\ No newline at end of file
...@@ -39,9 +39,10 @@ int main() { ...@@ -39,9 +39,10 @@ int main() {
cbs.push_back(new CallbackVerbose()); cbs.push_back(new CallbackVerbose());
ddp.setCallbacks(cbs); ddp.setCallbacks(cbs);
} }
// Solving the optimal control problem
struct timespec start, finish; struct timespec start, finish;
double elapsed; double elapsed;
// Solving the optimal control problem
Eigen::ArrayXd duration(T); Eigen::ArrayXd duration(T);
for (unsigned int i = 0; i < T; ++i) { for (unsigned int i = 0; i < T; ++i) {
clock_gettime(CLOCK_MONOTONIC, &start); clock_gettime(CLOCK_MONOTONIC, &start);
...@@ -49,28 +50,44 @@ int main() { ...@@ -49,28 +50,44 @@ int main() {
clock_gettime(CLOCK_MONOTONIC, &finish); clock_gettime(CLOCK_MONOTONIC, &finish);
elapsed = (finish.tv_sec - start.tv_sec) * 1000000.0; elapsed = (finish.tv_sec - start.tv_sec) * 1000000.0;
elapsed += (finish.tv_nsec - start.tv_nsec) / 1000.0; elapsed += (finish.tv_nsec - start.tv_nsec) / 1000.0;
duration[i] = elapsed / 1000.;
duration[i] = elapsed; // in us
} }
double avrg_duration = duration.sum() / T; double avrg_duration = duration.sum() / T;
double min_duration = duration.minCoeff(); double min_duration = duration.minCoeff();
double max_duration = duration.maxCoeff(); double max_duration = duration.maxCoeff();
std::cout << "Wall time solve [us]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")" std::cout << "Wall time solve [ms]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")"
<< std::endl;
// Running calc
for (unsigned int i = 0; i < T; ++i) {
clock_gettime(CLOCK_MONOTONIC, &start);
problem.calc(xs, us);
clock_gettime(CLOCK_MONOTONIC, &finish);
elapsed = (finish.tv_sec - start.tv_sec) * 1000000.0;
elapsed += (finish.tv_nsec - start.tv_nsec) / 1000.0;
duration[i] = elapsed / 1000.;
}
avrg_duration = duration.sum() / T;
min_duration = duration.minCoeff();
max_duration = duration.maxCoeff();
std::cout << "Wall time calc [ms]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")"
<< std::endl; << std::endl;
// Running calcDiff
for (unsigned int i = 0; i < T; ++i) { for (unsigned int i = 0; i < T; ++i) {
clock_gettime(CLOCK_MONOTONIC, &start); clock_gettime(CLOCK_MONOTONIC, &start);
problem.calcDiff(xs, us); problem.calcDiff(xs, us);
clock_gettime(CLOCK_MONOTONIC, &finish); clock_gettime(CLOCK_MONOTONIC, &finish);
elapsed = (finish.tv_sec - start.tv_sec) * 1000000.0; elapsed = (finish.tv_sec - start.tv_sec) * 1000000.0;
elapsed += (finish.tv_nsec - start.tv_nsec) / 1000.0; elapsed += (finish.tv_nsec - start.tv_nsec) / 1000.0;
duration[i] = elapsed; // in us duration[i] = elapsed / 1000.;
} }
avrg_duration = duration.sum() / T; avrg_duration = duration.sum() / T;
min_duration = duration.minCoeff(); min_duration = duration.minCoeff();
max_duration = duration.maxCoeff(); max_duration = duration.maxCoeff();
std::cout << "Wall time calcDiff [us]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")" std::cout << "Wall time calcDiff [ms]: " << avrg_duration << " (" << min_duration << "-" << max_duration << ")"
<< std::endl; << std::endl;
} }
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include <iostream> #include <iostream>
#ifdef WITH_MULTITHREADING #ifdef WITH_MULTITHREADING
#include <omp.h> #include <omp.h>
#define NUM_THREADS NTHREADS #define NUM_THREADS WITH_NTHREADS
#endif // WITH_MULTITHREADING #endif // WITH_MULTITHREADING
namespace crocoddyl { namespace crocoddyl {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment