Я использую Ubuntu 14.04 на ядре i5. Следующий код был протестирован на разных компьютерах с очень быстрым временем выполнения (3258 мс), но в моей системе он занимает 112921 мс. Я использую g ++ в качестве компилятора.Почему Eigen's Cholesky очень медленно разлагается на моем Ubuntu
#include <iostream>
#include <chrono>
#include <Eigen/Core>
#include <Eigen/Cholesky>
using namespace std;
using namespace std::chrono;
using namespace Eigen;
int main()
{
const MatrixXd::Index size = 4200;
MatrixXd m = MatrixXd::Random(size, size);
m = (m + m.transpose())/2.0 + 10000 * MatrixXd::Identity(size, size);
LLT<MatrixXd> llt;
auto start = high_resolution_clock::now();
llt.compute(m);
if (llt.info() != Success)
cout << "Cholesky decomposition failed!" << endl;
auto stop = high_resolution_clock::now();
cout << "Cholesky decomposition in "
<< duration_cast<milliseconds>(stop - start).count()
<< " ms." << endl;
return 0;
}
Скомпилировать с -O2 или -O3. –
Спасибо, это сработало :) –