123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /* ----------------------------------------------------------------------------
- * 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;
- }
|