2、提升程序运行效率——表格搜索:For与Find

针对表格类控件(TableFile、StackFile、CardFile、QueneFile等)进行目标搜索的时候,我们往往喜欢采用For循环或者Find语句,当两种语句在进行表格类控件目标搜索时,执行效率却相差很大。

下面设计一个简单的仿真实验,最终的结果可以指导大家以后进行此操作时语句的选择。

首先,建立一个1000行*1000列的TableFile,在TableFile[1000,1000]位置输入我们的搜索目标数值25,其他位置可以为空,或者输入任意数值(/=25)。

然后,分别新建两个Method来搜索TableFile中的目标值25,具体代码如下图所示。

最后,运行仿真,同时触发两个表格搜索方法,采用Profiler功能进行比较,结果如下图。

从仿真实验结果可以看出,在同样的搜索条件下,采用Find语句(Method1)的执行效率大约要比For循环语句(Method)高出70%。但是实际建模过程中,搜索效率还受到表格维度、光标位置、目标个数等因素的影响,因此以上结果仅供参考。

与此同时,两种搜索方法也存在一些区别,比如:当表格中存在多个目标值时,Find语句找到第一个目标就跳出了,For循环则依赖于Exitloop跳出循环;Find语句对于当前光标位置之前的表格不予搜索,For循环在指定范围内遍历表格,还有一些区别不再列举。因此大家在使用时,可以根据自己的建模需求酌情选择。