상당히 큰 행렬 (Eigen을 사용하여 작성한)을 전달해야하는 함수가 있으며 200x200 -> 1000x1000 크기의 범위를가집니다. 이 기능은 이것보다 더 복잡하지만, 그것의 골자는 다음과 같습니다C++ : 함수에 고유 정의 행렬 전달 및 모범 사례
#include <Eigen/Dense>
int main()
{
MatrixXi mIndices = MatrixXi::Zero(1000,1000);
MatrixXi* pMatrix = &mIndices;
MatrixXi mTest;
for(int i = 0; i < 10000; i++)
{
mTest = pMatrix[0];
// Then do stuff to the copy
}
}
그것은 RAM의 사용 가능한 공간을 찾는 데 시간이 더 걸리기 때문에이 행렬의 큰 크기로 실행하는 데 훨씬 더 오래 걸리는 이유 배열을 mTest와 동일하게 설정할 때? 희소 배열로 전환하면 상당히 빠른 것 같습니다.
대용량 행렬을 전달해야하고 런타임시 행렬 크기의 점진적 효과를 최소화하려는 경우 여기서 가장 좋은 방법은 무엇입니까? 지금은 같은 프로그램이 Matlab보다 C++에서 더 느리게 실행됩니다. 분명히 속도를 높이고 싶습니다!
최저
, 당신이 보여 코드에서
안녕하세요, 몇 가지 (i, j) 항목을 살펴보기 위해 매트릭스를 사용하고 있습니다. 그런 다음이를 기반으로 숫자를 반환합니다. 나는 이제 참조로 패스를 구현했습니다. 이것은 조금 더 빠르지 만 대량은 아닙니다. 다른 아이디어? Best, Ben – ben18785
더 많은 코드를 보여줘야합니다. 네가하려는 것을 정말로 모르겠다. –