Performance 为什么子地块比数字快得多?
我正在用MATLAB建立一个数据分析平台。系统的一个功能需要创建多个绘图。在任何给定的时间,只有一个绘图可用,用户可以根据请求遍历到下一个/上一个绘图(这里的重点是不需要打开多个窗口) 最初,每次显示一个新的绘图时,我都使用Performance 为什么子地块比数字快得多?,performance,matlab,plot,matlab-figure,subplot,Performance,Matlab,Plot,Matlab Figure,Subplot,我正在用MATLAB建立一个数据分析平台。系统的一个功能需要创建多个绘图。在任何给定的时间,只有一个绘图可用,用户可以根据请求遍历到下一个/上一个绘图(这里的重点是不需要打开多个窗口) 最初,每次显示一个新的绘图时,我都使用figure命令,但我注意到,当用户遍历到下一个绘图时,这个命令花费的时间比我想要的要长一些。降低可用性。因此,我尝试使用子绘图,它运行得更快 看到这种行为,我做了一个小实验,对两者都计时。第一次运行figure大约需要0.3秒,subplot需要0.1秒。图的平均运行时间为
figure
命令,但我注意到,当用户遍历到下一个绘图时,这个命令花费的时间比我想要的要长一些。降低可用性。因此,我尝试使用子绘图
,它运行得更快
看到这种行为,我做了一个小实验,对两者都计时。第一次运行figure
大约需要0.3秒,subplot
需要0.1秒。图
的平均运行时间为0.06秒,标准偏差为0.05,子批次
的平均运行时间仅为0.002秒,标准偏差为0.001。似乎子地块
要快一个数量级
问题是:在任何给定时间只有一个窗口可用的情况下,是否有理由使用figure
在一般情况下使用“子批次”是否会失去任何价值
(即使您只能使用一次,也可以进行类似的考虑)。使用
figure
一次来创建一个图形,然后使用clf
在重新绘制之前清除其内容。的调用只不过是创建一个新对象,其中包含一些方便的定位选项
轴对象始终是图形对象的子对象,因此如果没有打开的图形
窗口,子窗口将打开一个。此操作需要一点时间。因此,不必为每个新绘图打开一个新的图形窗口,只需使用子绘图
创建一个新的Axis对象就可以更快,这是您正确确定的。要节省一些内存,您可以按如下方式清除上一个绘图
正如我所理解的,您不想在平铺位置创建轴,而只想创建一个轴对象。因此,直接使用该命令会更快。这实际上是过火了
如果所有绘图都具有相同的轴限制和标签,则不需要使用“偶数”。使用(清除轴)删除上一个绘图,但保留标签、限制和网格
示例:
%// plot #1
plot( x1, y2 );
xlim( [0,100] ); ylim( [0,100] );
xlabel( 'x' );
ylabel( 'y' );
%// clear plot #1, keep all settings of axes
%// plot #2
plot( x2, y2 );
...