title: Boost refresh rate of App Designer UI elements
body: <p>I am currently trying to display data that I receive via serial port in a Matlab app designer application. I am suffering from abysmal refresh rate of the linear gauges (~1 Hz).</p>
  
  <p>The gauges' values are updated by a fixed-rate timer which is set to 30Hz. 
  A timestamp print in the timer callback shows me that it is called with the correct frequency. My computer is quite beefy and the Task Manager doesn't show any hints of high load - in fact, the MATLAB app consumes almost no CPU time at all. It's actually not just the gauges but all UI elements.</p>
  
  <p>So my guess - or better: my hope - is that there must be some hard cap on the refresh rate. The official documentation doesn't give any hints about how to change this, though.</p>
  
  <p>My MATLAB version is R2016b.</p>
  
  <p>So my question(s):</p>
  
  <ul>
  <li><p>Is this fixed with R2017a?</p></li>
  <li><p>If not: can I do something about it, i.e. fiddling with MATLAB builtin files?</p></li>
  </ul>
  
  <p>Here's a MCV example demonstrating the issue:</p>
  
  <pre><code>classdef testapp &lt; matlab.apps.AppBase
  
  % Properties that correspond to app components
  properties (Access = public)
      UIFigure                  matlab.ui.Figure
      andwatchhowthisstartstospinsmoothlyGaugeLabel  matlab.ui.control.Label
      andwatchhowthisstartstospinsmoothlyGauge  matlab.ui.control.SemicircularGauge
      KeepturninghereKnobLabel  matlab.ui.control.Label
      KeepturninghereKnob       matlab.ui.control.Knob
  end
  
  
  properties (Access = private)
      tim_the_timer
      i = 0;
  end
  
  methods (Access = private)
      function app = refreshMeter(app, ~,~)
          % display timestamp
          datestr(now,'HH:MM:SS.FFF')
  
          % update the gauge
          app.andwatchhowthisstartstospinsmoothlyGauge.Value = app.i;
          app.i = app.i + 1;
          if app.i &gt; 100
             app.i = 0;
          end
      end
  end
  
  
  methods (Access = private)
  
      % Code that executes after component creation
      function startupFcn(app)
         t = timer;
         t.TimerFcn = @app.refreshMeter;
         t.Period = 0.02;
         t.BusyMode = 'drop';
         t.ExecutionMode = 'fixedRate';
         start(t);
         app.tim_the_timer = t;
      end
  
      % Close request function: UIFigure
      function UIFigureCloseRequest(app, event)
          stop(app.tim_the_timer);
          delete(app.tim_the_timer);
          delete(app);
      end
  end
  
  % App initialization and construction
  methods (Access = private)
  
      % Create UIFigure and components
      function createComponents(app)
  
          % Create UIFigure
          app.UIFigure = uifigure;
          app.UIFigure.Position = [100 100 640 480];
          app.UIFigure.Name = 'UI Figure';
          app.UIFigure.CloseRequestFcn = createCallbackFcn(app, @UIFigureCloseRequest, true);
          setAutoResize(app, app.UIFigure, true)
  
          % Create andwatchhowthisstartstospinsmoothlyGaugeLabel
          app.andwatchhowthisstartstospinsmoothlyGaugeLabel = uilabel(app.UIFigure);
          app.andwatchhowthisstartstospinsmoothlyGaugeLabel.HorizontalAlignment = 'center';
          app.andwatchhowthisstartstospinsmoothlyGaugeLabel.Position = [275 138 246 15];
          app.andwatchhowthisstartstospinsmoothlyGaugeLabel.Text = '... and watch how this starts to spin smoothly';
  
          % Create andwatchhowthisstartstospinsmoothlyGauge
          app.andwatchhowthisstartstospinsmoothlyGauge = uigauge(app.UIFigure, 'semicircular');
          app.andwatchhowthisstartstospinsmoothlyGauge.Position = [338 168 120 65];
  
          % Create KeepturninghereKnobLabel
          app.KeepturninghereKnobLabel = uilabel(app.UIFigure);
          app.KeepturninghereKnobLabel.HorizontalAlignment = 'center';
          app.KeepturninghereKnobLabel.Position = [119 265 112 15];
          app.KeepturninghereKnobLabel.Text = 'Keep turning here...';
  
          % Create KeepturninghereKnob
          app.KeepturninghereKnob = uiknob(app.UIFigure, 'continuous');
          app.KeepturninghereKnob.Position = [145 314 60 60];
      end
  end
  
  methods (Access = public)
  
      % Construct app
      function app = testapp()
  
          % Create and configure components
          createComponents(app)
  
          % Register the app with App Designer
          registerApp(app, app.UIFigure)
  
          % Execute the startup function
          runStartupFcn(app, @startupFcn)
  
          if nargout == 0
              clear app
          end
      end
  
      % Code that executes before app deletion
      function delete(app)
  
          % Delete UIFigure when app is deleted
          delete(app.UIFigure)
      end
  end
  end
  </code></pre>
  
  <p><strong>Edit</strong>: I noticed that the gauge gets immediately updated when I turn a knob, slider, etc. So somehow the capability of a higher refresh rate is definitely there... but how to enable it without having to touch controls? Updated MCV accordingly.</p>