gtsam/timing/timeCholesky.cpp

61 lines
1.9 KiB
C++

/* ----------------------------------------------------------------------------
* GTSAM Copyright 2010, Georgia Tech Research Corporation,
* Atlanta, Georgia 30332-0415
* All Rights Reserved
* Authors: Frank Dellaert, et al. (see THANKS for the full author list)
* See LICENSE for the license information
* -------------------------------------------------------------------------- */
/**
* @file timeCholesky.cpp
* @brief time Cholesky factorization
* @author Frank Dellaert
* @date March 4, 2016
*/
#include <gtsam/base/cholesky.h>
#include <time.h>
#include <iostream>
#include <iomanip> // std::setprecision
using namespace std;
using namespace gtsam;
//#define TERNARY
int main() {
Matrix top = (Matrix(7,7) <<
4.0375, 3.4584, 3.5735, 2.4815, 2.1471, 2.7400, 2.2063,
0., 4.7267, 3.8423, 2.3624, 2.8091, 2.9579, 2.5914,
0., 0., 5.1600, 2.0797, 3.4690, 3.2419, 2.9992,
0., 0., 0., 1.8786, 1.0535, 1.4250, 1.3347,
0., 0., 0., 0., 3.0788, 2.6283, 2.3791,
0., 0., 0., 0., 0., 2.9227, 2.4056,
0., 0., 0., 0., 0., 0., 2.5776).finished();
Matrix ABC(100,100);
ABC.topLeftCorner<7,7>() = top;
cout << setprecision(3);
size_t n = 100000;
for (size_t nFrontal = 1; nFrontal <= 7; nFrontal++) {
auto timeLog = clock();
for (size_t i = 0; i < n; i++) {
Matrix RSL(ABC);
choleskyPartial(RSL, nFrontal);
}
auto timeLog2 = clock();
auto seconds = (double)(timeLog2 - timeLog) / CLOCKS_PER_SEC;
cout << "partialCholesky " << nFrontal << ": ";
auto ms = ((double)seconds * 1000000 / n);
cout << ms << " ms, " << ms/nFrontal << " ms/dim" << endl;
}
return 0;
}