4. 尽量使用数组,避免使用集合 除非你必须使用集合(Collection),否则你应该尽量使用数组。据测试,数组的存取速度可以达到集合的100倍。这个数字听起来有点骇人听闻,但是如果你考虑到集合是一个对象,你就会明白为什么差异会这么大。 5. 展开小的循环体 在编码的时候,有可能遇到这种情况:一个循环体只会循环2到3次,而且循环体由几行代码组成。在这种情况下,你可以把循环展开。原因是循环会占用额外的CPU时间。但是如果循环比较复杂,你就没有必要这样做了。 6. 避免使用很短的函数 和使用小的循环体相同,调用只有几行代码的函数也是不经济的--调用函数所花费的时间或许比执行函数中的代码需要更长的时间。在这种情况下,你可以把函数中的代码拷贝到原来调用函数的地方。 7. 减少对子对象的引用 在VB中,通过使用.来实现对象的引用。例如: Form1.Text1.Text 在上面的例子中,程序引用了两个对象:Form1和Text1。利用这种方法引用效率很低。但遗憾的是,没有办法可以避免它。程序员唯一可以做就是使用With或者将用另一个对象保存子对象(Text1)。 注释: 使用With With frmMain.Text1 .Text = "Learn VB" .Alignment = 0 .Tag = "Its my life" .BackColor = vbBlack .ForeColor = vbWhite End With 或者 注释: 使用另一个对象保存子对象 Dim txtTextBox as TextBox Set txtTextBox = frmMain.Text1 TxtTextBox.Text = "Learn VB" TxtTextBox.Alignment = 0 TxtTextBox.Tag = "Its my life" TxtTextBox.BackColor = vbBlack TxtTextBox.ForeColor = vbWhite 注意,上面提到的方法只适用于需要对一个对象的子对象进行操作的时候,下面这段代码是不正确的: With Text1 .Text = "Learn VB" .Alignment = 0 .Tag = "Its my life" .BackColor = vbBlack .ForeColor = vbWhite End With 很不幸的是,我们常常可以在实际的代码中发现类似于上面的代码。这样做只会使代码的执行速度更慢。原因是With块编译后会形成一个分枝,会增加了额外的处理工作。 8. 检查字符串是否为空 大多数程序员在检查字符串是否为空时会使用下面的方法: If Text1.Text = "" then 注释: 执行操作 End if 很不幸,进行字符串比较需要的处理量甚至比读取属性还要大。因此我建议大家使用下面的方法: If Len(Text1.Text) = 0 then 注释: 执行操作 End if 9. 去除Next关键字后的变量名 在Next关键字后加上变量名会导致代码的效率下降。我也不知道为什么会这样,只是一个经验而已。不过我想很少有程序员会这样画蛇添足,毕竟大多数程序员都是惜字如金的人。 注释: 错误的代码 For iCount = 1 to 10 注释: 执行操作 Next iCount 注释: 正确的代码 For iCount = 1 to 10 注释: 执行操作 Next 10. 使用数组,而不是多个变量 当你有多个保存类似数据的变量时,可以考虑将他们用一个数组代替。在VB中,数组是最高效的数据结构之一。 11. 使用动态数组,而不是静态数组 使用动态数组对代码的执行速度不会产生太大的影响,但是在某些情况下可以节约大量的资源。 12. 销毁对象 无论编写的是什么软件,程序员都需要考虑在用户决定终止软件运行后释放软件占用的内存空间。但遗憾的是很多程序员对这一点好像并不是很在意。正确的做法是在退出程序前需要销毁程序中使用的对象。例如: Dim FSO as New FileSystemObject 注释: 执行操作 注释: 销毁对象 Set FSO = Nothing 对于窗体,可以进行卸载: Unload frmMain 或 Set frmMain = Nothing 13. 变长和定长字符串 从技术上来说,与变长字符串相比,定长字符串需要较少的处理时间和空间。但是定长字符串的缺点在于在很多情况下,你都需要调用Trim函数以去除字符串末的空字符,这样反而会降低代码效率。所以除非是字符串的长度不会变化,否则还是使用变长字符串。 14. 使用类模块,而不是ActiveX控件 除非ActiveX控件涉及到用户界面,否则尽量使用轻量的对象,例如类。这两者之间的效率有很大差异。 15. 使用内部对象 在涉及到使用ActiveX控件和DLL的时候,很多程序员喜欢将它们编译好,然后再加入工程中。我建议你最好不要这样做,因为从VB连接到一个外部对象需要耗费大量的CPU处理能力。每当你调用方法或存取属性的时候,都会浪费大量的系统资源。如果你有ActiveX控件或DLL的源代码,将它们作为工程的私有对象。  
2/2 首页 上一页 1 2 |