Passing arguments to gui via varargin is slow - why?

조회 수: 1 (최근 30일)
Maximilian Rüppell
Maximilian Rüppell 2016년 6월 28일
댓글: Maximilian Rüppell 2016년 6월 28일
Hi everyone,
I am using a gui created with GUIDE and I am passing some arguments to the gui via varargin. Varargin is then read during the _OpeningFcn. Part of the gui is plotting a large vector. When I use small variables in the varargin and read the large data from within the _OpeningFcn, everythin works fine. If I pass the large vector as an argument via varargin to the gui, it takes forever (minutes and more). Passing these arrays to other (normal) function works fine, the size is still reasonable (1x75,000,000 double).
Does anyone know why this happens? And does anyone know a solution or workaround? Is using global variables a solution?
Thanks for your ideas!
Maximilian
  댓글 수: 2
José-Luis
José-Luis 2016년 6월 28일
Could you post a snippet of your code?
Maximilian Rüppell
Maximilian Rüppell 2016년 6월 28일
I just found the reason and I am posting this just in case someone elso is having a similar problem: The inputs of varargin need to explicitly specified, i.e.
wanted_variable=varargin{1};
I was using the varargin with another function to sort the input arguments:
sorted_variables = other_function(varargin);
I think that caused MATLAB to search for something special in the varargin, since according to the profiler almost all time was spent at gui_mainfcn>local_isInvokeHGCallback and the code:
try
fhandle = functions(gui_State.gui_Callback);
result = ~isempty(findstr(gui_State.gui_Name,fhandle.file)) || ...
(ischar(varargin{1}) ...
&& isequal(ishghandle(varargin{2}), 1) ...
&& (~isempty(strfind(varargin{1},[get(varargin{2}, 'Tag'), '_'])) || ...
~isempty(strfind(varargin{1}, '_CreateFcn'))) );
catch
result = false;
end
So, everything works fine again. :-)

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by