优化之路:优化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快,而且出错也会显示错误信息。