Właśnie napisałem program Matlab w języku C++ jako funkcję mex, aby przyspieszyć działanie, z fantastycznymi rezultatami. Ta decyzja optymalizacyjna była bardzo dobrym pomysłem z przyspieszeniem do 20 razy bez gwintowania. Wciąż mnie ciekawi, na co funkcja mex spędza czas i chce zidentyfikować możliwe wąskie gardła.Profilowanie funkcji mex
Szukam sposobu na profilowanie funkcji mex. Profiler Matlab jest mało przydatny, a pozostałe profilery, które pobrałem (zarówno bezpłatne, jak i próbne), chcą uruchomić plik wykonywalny. Nie jestem mex-guru, ale o ile zrozumiałem, jedynym sposobem na uruchomienie mex jest z poziomu Matlaba. Funkcja mex jest kompilowana do biblioteki dll, ale nazywa się .mex64. Więc ten problem powinien być podobny do profilowania biblioteki DLL. Aby napisać funkcję mex C++, użyłem VS2005 dla jednego użytkownika (tj. Nie wersji zespołowej) i działam na platformie x64.
Czy ktoś wie o dobrym sposobie profilowania funkcji mex? Jakiego narzędzia należy użyć i jak z niego korzystać, kiedy zaczynam od programu Matlab? Czy istnieje inny sposób profilowania kodu C++?
Dzięki za cynk. To dobre podejście. Jedynym moim problemem jest to, że dane wejściowe do funkcji mexFunction to duży zbiór dużych struktur matlab. Muszę napisać kod, aby stworzyć wszystkie te rzeczy w opakowaniu, aby móc je uruchomić, co powstrzymuje mnie od zrobienia tego przy jednym i bez żadnej myśli. – AnnaR
nie przestrzegaj. nie możesz stworzyć wszystkich swoich struktur wewnątrz programu matlab i zapisać je w pliku .mat? (cokolwiek, co było poprzednio argumentem wejściowym do twojej funkcji mex, jest teraz zapisywane w pliku .mat i odczytywane przez nowe opakowanie z dysku.) – second
Możliwe jest profilowanie plików mex bezpośrednio za pomocą valgrind. Sprawdź [to] (http : //stackoverflow.com/questions/11220250/how-do-i--profile-a-mex-function-in-matlab/12405131#12405131) odpowiedź. – angainor