优化之路:优化VB程序代号

IT商界

  速度优化的种类我在前几期的文章中已提过,现在,我们来谈谈真实速度的优化。要提高真实速度,就离不开代码了。但除非应用程序是用来产生分形图形的,否则应用程序看上去并不受限于代码的实际处理速度。其他典型的因素,如显示的速度、网络延迟或磁盘操作,才是应用程序受限的瓶颈。例如,导致图形体加载过慢的原因是窗体上的控件图形的个数太多,而不是由于Form_load事件中的代码太慢。尽管如此,代码本身的速度也可成为限制程序速度的瓶颈,特别是经常要调用的例程。这种情况下,可以采用以下技术来优化应用程序的真实速度:

  1.避免使用Variant变量

  2.使用Long integer变量和整数运算

  3.将常用属性缓存在变量里

  4.使用内嵌过程代替过程调用

  5.尽可能使用常数

  6.用ByVal传递常数,而不用ByRef

  7.使用类型确定的可选参数

  8.利用集合的优点

  在VB中Variant变量是VB缺省变量,可在运行时自动转化为其他的适当数据类型。但笔者更提倡直接使用所需的数据类型,这样就避免了不必要的操作而加快程序的运行速度。

  避免使用Variant 变量可使用“Option Expicit”语句。“Option Expicit”在“工具→选项”,选择“编辑器”,选定“要求变量声明”复选框。在声明多个变量时要小心:如果没有用as type子句,它们实际上仍被声明为Variant变量。如:要声明X,Y,Z为long型,写为Dim X,Y,Z As Long,则只有Z是Long型,写成Dim X As Long,Y As Long,Z As Long就对了。

  long整型变量是32位CPU的本机数据类型;如果无法用long,就尽量使用integer或byte数据类型。下表就是各种数据类型的运算速度的比较:

  最快                最慢

  Long>Integer>Byte>Single>Double>Currency

  编写含有参数的sub或function过程时,按值(byval)传递参数比按地址(byref)传递快,如果过程不需改变参数的值,就可以按值来传递。

  使用VB6类型确定的可选参数,也可提高sub或function的调用速度。使用类型确定的可选参数,每次调用时所占用的堆栈空间较少,且传递到内存的数据也较少。而且它的访问速度比varianr快,而且出错也会显示错误信息。