VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - VB编程之提速攻略(三)
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:9112, 日期:2000-10-13
VB编程之提速攻略(三)
作 者 : 甘冀平

   ● 快速搜索目录

   为了快速搜索目录,请使用如下相关API函数:FindFirstFile、 FindNextFile 和 FindClose 。

   ● 大小写比较

   UCase$和LCase$函数用于执行大小写比较,但使用下面的API函数将更快:

    Declare Function CharLower Lib "user32" _
        Alias "CharLowerA" (ByVal lpsz As String) As String
    Declare Function CharUpper Lib "user32" _
        Alias "CharUpperA" (ByVal lpsz As String) As String

   ● 使用With语句引用对象

   下面的语句在引用长表达式对象时,速度更快:

        With SelectedEmployee.NextOfKin.HomeInformation.Address
            .Street = txtStreet.Text
            .City = txtCity.Text
            .State = txtState.Text
            .Phone = txtPhone.Text
        End With
   ● 使用ByRef方式传递参数数值,而不要使用ByVal方式

   当使用ByRef方式时,程序传递数值的地址。而使用ByVal时,程序必须要复制一份数值的拷贝,然后再做传递工作。通常,传递地址要比传递拷贝速度快。

   ● 使用*而不是^执行简单的整数幂运算

   比如,使用语句A=B*B,而不是A=B^2,前者速度要快一些。

   ● 合成长字符串

   如果需要建立一个长字符串,请先一块块地生成,最后再进行合并工作。比如,下面的子程序AddText1, AddText2的功能是在字符串后添加文本,那么如下的代码:

    Dim txt As String

        txt = AddText1(txt)
        txt = AddText2(txt)
        txt = AddText3(txt)

要比下面的代码花费更多的时间:
    Dim txt As String
    Dim txt1 As String
    Dim txt2 As String
    Dim txt3 As String

        AddText1(txt1)
        AddText2(txt2)
        AddText3(txt3)
        txt = txt1 & txt2 & txt3

   在第1段代码中,AddText子程序必须要对长字符串进行操作。而第2段代码只需要操作相对短小的字符串。

   ● 保存数学运算的中间结果

   比如,下面的一段代码:

    Xsquare = x * x
    Ysquare = y * y
    a = 2 * Xsquare + 3 * Ysquare
    b = 3 * Xsquare + 5 * Ysquare
    If a + b > 50 Then ...

将比下面的代码运行速度快:
    If 2 * x * x + 3 * y * y + _
       3 * x * x + 5 * y * y > 50 _
    Then ...

   ● 在Loop循环上界中使用数值而不是函数表达式

   在使用Loop循环,不要使用函数来判断终止数值,比如如下代码:

    i = 1
    Do While i <= SlowFunction()
        total = total + i
    Loop

就要比下面的代码运行慢:
    i_max = SlowFunction()
    i = 1
    Do While i <= i_max
        total = total + i
    Loop

   注意:For语句控制的循环不会每次都计算最终数值,当For语句开始时,系统计算上界数值然后就保存它,每次判断时不用再重新计算。所以,单单使用下面的代码就可以:

    For i = 1 To SlowFunction()
        total = total + i
    Next i