61 lines
1.9 KiB
C++
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;
|
|
}
|