Very informative thread.
I've done benchmarking and found that performance of 2014b vs much old - depends on the situation. My application is many subplots with scrolling subplots at high FPS. Eg an oscilloscope with many displays.
One very big improvement for me comes from turning off graphic smoothing. I
set(gcf, 'GraphicsSmoothing','off')
This almost makes 2014b faster in all cases even with hardware support:
opengl('info') reports
'GeForce 8600 GTS/PCIe/SSE2'
software = 'false'
Changing the renderer can also make a difference.
http://www.mathworks.com/help/matlab/ref/figure-properties.html
Overall figure window size (not area of the specific subplot) makes a bit difference.
I pasted a function to report FPS from 3 second runs.
x=0:0.001:100;
y=sin(x) + rand(size(x));
fun_exp_plot4(3, 1,1,1,x,y,5e4)
Chris
function [FPS] = plot_exp(run_time, num_plots, nx, ny, x, y, pts)
% function [FPS] = plot_exp(run_time, num_plots, nx, ny, x, y, pts)
% calculate the FPS for an oscilloscope display
%
% try with different figure sizes, number of plots, etc
%
% x=0:0.001:100;
% y=sin(x);
%or y=sin(x) + rand(size(x));
%
% examples:
% 1 plot, 3 seconds test, with 500 points
% fun_exp_plot4(3, 1,1,1, x,y, 5e2)
%
% 1 plot with 50,000 points
% fun_exp_plot4(3, 1,1,1, x,y, 5e4)
%
% 4 plots with 50k points
% fun_exp_plot4(3, 4,2,2, x,y, 5e4)
%
% some performance effects in 2014b
%
% set(gcf, 'GraphicsSmoothing','off')
% set(gcf, 'Renderer','painters')
% set(gcf, 'Renderer','opengl')
clf;
cla;
drawnow;
%set(gcf,'Position',[-1500 500 1400 500])
%set(gcf,'Position',[-1500 500 500 500])
idx = 0;
ndx=1:pts;
h=[];
for i = 1:num_plots
subplot(nx,ny,i)
% h(i) =plot(x(1),y(1),'.','markersize',1);
h(i) =plot(x(1),y(1) );
set(h(i),'xdata',x(ndx),'ydata',y(ndx+idx+1000*i));
end
idx = 0;
% set(gcf,'Visible','off');
a=tic();
while toc(a) < run_time
idx = idx + 1;
for i = 1:num_plots
set(h(i),'ydata',y(ndx+idx*20+1000*i));
end
drawnow expose % update will skip redrawing...
end;
dt=toc(a);
FPS = idx/dt;