function varargout = Perf_Test(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Perf_Test_OpeningFcn, ...
                   'gui_OutputFcn',  @Perf_Test_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end

function Perf_Test_OpeningFcn(hObject, eventdata, handles, varargin)
%--Timer initialisierung

t.Timer = timer('ExecutionMode', 'fixedRate', 'Period', 0.1,...
                'TimerFcn', @(in1, in2) run_Test(in1, in2, handles));
t.Counter = 0;
t.hAxes = handles.hAxes;
hold(handles.hAxes);
handles.output = hObject;
guidata(hObject, handles);
setappdata(handles.figure1, 'data', t)

function varargout = Perf_Test_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;


function btn_Start_Callback(hObject, eventdata, handles)
t = getappdata(handles.figure1, 'data');
start(t.Timer);

function btn_Stop_Callback(hObject, eventdata, handles)
t = getappdata(handles.figure1, 'data');
stop(t.Timer);

function run_Test (mTimer, ~, handles)
t = getappdata(handles.figure1, 'data');
if t.Counter == 0
    t.plot = plot(t.Counter, rand(1), '.');
else
    tic;
    oldx = get(t.plot, 'XData');
    oldy = get(t.plot, 'YData');
    newx = [oldx, t.Counter];
    newy = [oldy, rand(1)];
    set(t.plot, 'XData', newx, 'YData', newy)
    toc;
end
t.Counter = t.Counter + 1;
setappdata(handles.figure1, 'data', t);

