选项 Explicit
强制变量声明,因此保证声明了所有变量而实现快速访问。
技巧 11:在子例程和函数中使用局部变量
局部变量是在子例程和函数中声明的变量。在子例程和函数中,局部变量访问要快于全局变量访问。使用局部变量还可以使代码更加清晰,因此尽可能使用局部变量。
技巧 12:将常用数据复制到脚本变量
在 ASP 中访问 COM 时,应该将常用的对象数据复制到脚本变量中。这将削减 COM 方法的调用,COM 方法的调用与访问脚本变量相比,要相对昂贵些。在访问 Collection 和 Dictionary 对象时,这一技术也可以削减了昂贵的查找。
通常,如果打算多次访问对象数据,请将数据放入脚本变量。该优化的主要目标是 Request 变量(Form 和 QueryString 变量)。例如,您的站点可能传递一个名为 UserID 的 QueryString。假定该 UserID 变量要在特定页中引用 12 次。请不要调用 
Request("UserID") 
12 次,而在 ASP 页的开头将 UserID 赋予某个变量。然后就在页中使用该变量。这将节省 11 次 COM 方法调用。 
在实际中,访问 COM 属性或方法暗藏着繁复的过程和大量的开销。下面是一个示例,它只是些相当普通的代码(从语法上讲):
Foo.bar.blah.baz = Foo.bar.blah.qaz(1) 
If Foo.bar.blah.zaq = Foo.bar.blah.abc Then ‘' ... 
在运行这段代码时,将发生下列事件:
变量 
Foo 
被解析为全局变量。 
变量 
bar 
被解析为 
Foo. 
的成员。这将产生 COM 方法调用。 
变量 
blah 
被解析为 
Foo.bar 
的成员。这也将产生 COM 方法调用。 
变量 
qaz 
被解析为 
foo.bar.blah 
的成员。是的,这也将产生 COM 方法调用。 
调用 
Foo.bar.blah.quaz(1) 
。又一次产生 COM 方法调用。理解这幅图了吗? 
执行步骤 1 到 3 将再次解析 
baz 
。系统不知道调用 
qaz 
是否更改对象模型,因此步骤 1 到 3 必须再次执行解析 
baz 
。 
将 
baz 
解析为 
Foo.bar.blah 
的成员。进行属性置入。 
再次执行步骤 1 到 3 并解析 
zaq 
。 
再次执行步骤 1 到 3 并解析 
abc 
。 
正如所见,这是非常可怕的低效率(而且非常慢)。用 VBScript 编写该代码实现的快速方法为: 
Set myobj = Foo.bar.blah ‘' 对 blah 做一次解析 
Myobj.baz = myobj.qaz(1) 
If Myobj.zaq = Myobj.abc Then ‘'... 
如果您使用的是 VBScript 5.0 或更高版本,则可用 
With 
语句来写这段代码: 
With Foo.bar.blah 
.baz = .qaz(1) 
If .zaq = .abc Then ‘'... 
... 
End With 
请注意该技巧对 VB 编程同样有效。
技巧 13:避免重新定义数组
尽量避免 
Redim 
数组。从关心性能的角度来说,如果计算机受物理内存的限制,最好一开始将数组的维数设置为最差方案 - 而不要将维数设置为最佳方案,再根据需要重新定义维数。这并不意味着明知道不需要那么多而就是应该分配太多的内存。 
      
