Performance 为什么子地块比数字快得多?

Performance 为什么子地块比数字快得多?,performance,matlab,plot,matlab-figure,subplot,Performance,Matlab,Plot,Matlab Figure,Subplot,我正在用MATLAB建立一个数据分析平台。系统的一个功能需要创建多个绘图。在任何给定的时间,只有一个绘图可用,用户可以根据请求遍历到下一个/上一个绘图(这里的重点是不需要打开多个窗口) 最初,每次显示一个新的绘图时,我都使用figure命令,但我注意到,当用户遍历到下一个绘图时,这个命令花费的时间比我想要的要长一些。降低可用性。因此,我尝试使用子绘图,它运行得更快 看到这种行为,我做了一个小实验,对两者都计时。第一次运行figure大约需要0.3秒,subplot需要0.1秒。图的平均运行时间为

我正在用MATLAB建立一个数据分析平台。系统的一个功能需要创建多个绘图。在任何给定的时间,只有一个绘图可用,用户可以根据请求遍历到下一个/上一个绘图(这里的重点是不需要打开多个窗口)

最初,每次显示一个新的绘图时,我都使用
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 );

...