会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Access技巧 > 编程心得绝招 > 正文

Access七种提高代码的运行速度的技巧

时间:2013-08-29 18:10 来源:Office中国 作者:esmile 阅读:

本文描述了如何通过一些技术手段来提高编程代码的执行效率。
  
1. 使用整数(Integer)和长整数(Long)
    提高代码运行速度最简单的方法莫过于使用正确的数据类型了。也许你不相信,但是正确地选择数据类型可以大幅度提升代码的性能。
       在大多数情况下,程序员可以将Single,Double和Currency类型的变量替换为Integer或Long类型的变量,因为VB处理Integer和Long的能力远远高于处理其它几种数据类型。
       下面是排序: Long 最快 Integer . Byte . Single . Double . Currency 最慢
     在大多数情况下,程序员选择使用Single或Double的原因是因为它们能够保存小数。但是小数也可以保存在Integer类型的变量中。例如程序中约定有三位小数,那么只需要将保存在Integer变量中的数值除以1000就可以得到结果。根据我的经验,使用Integer和Long替代Single,Double和Currency后,代码的运行速度可以提高将近10倍。   

2. 避免使用变体 
  对于一个VB程序员来说,这是再明显不过的事情了。变体类型的变量需要16个字节的空间来保存数据,而一个整数(Integer)只需要2个字节。通常使用变体类型的目的是为了减少设计的工作量和代码量,也有的程序员图个省事而使用它。但是如果一个软件经过了严格设计和按照规范编码的话,完全可以避免使用变体类型。
  在这里顺带提一句,对于Object对象也存在同样的问题。请看下面的代码:
       Dim FSO
       Set FSO = New FileSystemObject
  或
       Dim FSO as object
       Set FSO = New FileSystemObject
  上面的代码由于在申明的时候没有指定数据类型,在赋值时将浪费内存和CPU时间。
       正确的代码应该象下面这样: Dim FSO as New FileSystemObject   

3. 尽量避免使用属性
  在平时的代码中,最常见的比较低效的代码就是在可以使用变量的情况下,反复使用属性(Property),尤其是在循环中。
       要知道存取变量的速度是存取属性的速度的20倍左右。下面这段代码是很多程序员在程序中会使用到的:
        Dim intCon as Integer
        For intCon = 0 to Ubound(SomVar())
              Text1= Text1& vbcrlf & SomeVar(intCon)
        Next intCon
  下面这段代码的执行速度是上面代码的20倍。
        Dim intCon as Integer
        Dim sOutput as String
        For intCon = 0 to Ubound(SomeVar())
              sOutput = sOutput & vbCrlf & SomeVar(intCon)
        Next
        Text1= sOutput
        同样地,像这样的代码 . . .
         Do Until EOF(F)

               Line Input #F, nextLine
               Text1= Text1+ nextLine
          Loop . . . 比下面的代码慢得多:
          Do Until EOF(F)

                 Line Input #F, nextLine
                 bufferVar = bufferVar + nextLine
          Loop Text1= bufferVar
          然而,下面的代码完成了相同的功能,而且还要快: Text1= Input(F, LOF(F))
          如上述,几种方法都实现了同样的任务;同时,最好的算法也是最优的。   

4. 尽量使用数组,避免使用集合
   除非你必须使用集合(Collection),否则你应该尽量使用数组。据测试,数组的存取速度可以达到集合的100倍。这个数字听起来有点骇人听闻,但是如果你考虑到集合是一个对象,你就会明白为什么差异会这么大。   
5. 展开小的循环体 
  在编码的时候,有可能遇到这种情况:一个循环体只会循环2到3次,而且循环体由几行代码组成。在这种情况下,你可以把循环展开。原因是循环会占用额外的CPU时间。但是如果循环比较复杂,你就没有必要这样做了。   

6. 避免使用很短的函数 
  和使用小的循环体相同,调用只有几行代码的函数也是不经济的--调用函数所花费的时间或许比执行函数中的代码需要更长的时间。在这种情况下,你可以把函数中的代码拷贝到原来调用函数的地方。   

7. 减少对子对象的引用
   在VB或者VBA中,通过使用.来实现对象的引用。例如: Form1.Text1.Value
        在上面的例子中,程序引用了两个对象:Form1和Text1。利用这种方法引用效率很低。但遗憾的是,没有办法可以避免它。
        程序员唯一可以做就是使用With或者将用另一个对象保存子对象(Text1)。
       ' 使用With
        With frmMain.Text1 = "Learn VB"
               .Alignment = 0
               .Tag = "Its my life"
               .BackColor = vbBlack
               .ForeColor = vbWhite
         End With
    或者 ' 使用另一个对象保存子对象
         Dim txtTextBox as TextBox
         Set txtTextBox = frmMain.Text1
         TxtTextBox.value = "Learn VB"
         TxtTextBox.Alignment

(责任编辑:admin)

顶一下
(3)
100%
踩一下
(0)
0%
上一篇:没有了
下一篇:Access vba的题目怎么做
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: