나는 많은 반복 프로그램을 작성하기 위해 matlab을 사용합니다. 각 반복의 데이터 처리가 이전 반복의 데이터 처리와 관련되어 있으므로 벡터화 할 수 없습니다.mex 코드가 matlab 코드보다 느리게 실행되는 방법
그런 다음 빌드 - 인 MATLAB 코더를 사용하여 melab 코드를 변환하면 결과 속도가 훨씬 느려집니다. mex 코드가 도움이되지 않는 것 같아서 mex 코드를 직접 써야할지 모르겠습니다.
나는 많은 반복 프로그램을 작성하기 위해 matlab을 사용합니다. 각 반복의 데이터 처리가 이전 반복의 데이터 처리와 관련되어 있으므로 벡터화 할 수 없습니다.mex 코드가 matlab 코드보다 느리게 실행되는 방법
그런 다음 빌드 - 인 MATLAB 코더를 사용하여 melab 코드를 변환하면 결과 속도가 훨씬 느려집니다. mex 코드가 도움이되지 않는 것 같아서 mex 코드를 직접 써야할지 모르겠습니다.
가능한 경우 MathWorks에 연락하여 조언을 구하십시오. 당신이 그렇게 할 수 없다면, 나는 실제로 문서를 읽고 당신이 포기하기 전에 찾은 모든 것을 시도 할 것을 제안 할 것입니다.
내가 MATLAB 코드를 구현하는 방식을 약간 변경하고 프로젝트 설정에 약간의 변경 사항 (예 : Ctrl-C에 대한 응답 비활성화, MATLAB에 대한 외래 호출)을 사용하면 생성 된 코드에서 크기 차수 이상의 속도 차이. MathWorks 외부의 많은 사람들이 당신을 위해 가치 있고 합리적인 변화가 무엇인지 정확하게 알릴 수 있습니다.
필자는 하나의 프로젝트에서만 MATLAB Coder를 사용했으며, 전문가 (사실 유능한 사람조차도 아님) C 프로그래머는 아닙니다. 그럼에도 불구하고 나는 mexed 때 원래의 MATLAB 코드보다 약 10-15 배 빠른 C 코드를 생성 할 수있었습니다. 나는 a) 모든 다른 설정을보고 무슨 일이 일어 났는지보고 b) 체계적으로 문서를 살펴보고 MATLAB 코드에서 내가 만났던 구조를 적용 할 수있는 곳이 있는지 확인했다. coder.nullcopy
, coder.unroll
등). 물론 코드가 상당히 다를 수 있습니다.
[Matlab mex 파일의 복제본은 그 직선의 C 코드와 비교하여 느리다.] (http://stackoverflow.com/questions/5228388/matlab-mex-file-is-slow-compared-to-its-straight- c-equivalent) – TheCodeArtist
나는 그것의 복제본을 생각하지 않는다. 그 질문은 MEX-MATLAB 게이트웨이 레벨에서 느려지는 특정 사례 (R2011a에서 수정 된 수락 된 답변에 따르면)와 OP MX-API 기능을 사용하지 않았습니다. 반면 이것은 코드 생성을 위해 * MATLAB 코더 *를 사용합니다. 이 질문은 현재의 형태로 합리적으로 대답 할 수 없다고했는데, 어떤 코드 (예 : 원래의 MATLAB 코드와 생성 된 C 코드)를 볼 필요가 있습니다. – Amro
Matlab의 프로파일 러 도구와 시계 함수를 사용해 보았습니까 C로 어떤 부분이 가장 많은 시간을 차지하는지 알아 내겠습니까? 그리고 Amro가 맞습니다. 코드를 게시하십시오. – MattG