网站制作学习网ASP→正文:微软建议的ASP性能优化5
字体:

微软建议的ASP性能优化5

ASP 2008/1/14 8:17:28  点击:不统计

在 IIS 5.0 上,使用 ASP 的中隔离级,并使用 COM+ 库应用程序。

这些是非常一般的原则,主机服务公司一般情况下以中或高隔离级运行 ASP,而单用途的 Web 服务器可以以低隔离级运行。衡量各种利弊,并自己决定哪个配置更能符合您的需要。



技巧 10:使用显式选项

在 .asp 文件中应使用 Option Explicit。此指令放在 .asp 文件的最上面,它强制开发人员声明要使用到的所有变量。许多程序员认为这种方法对于调试应用程序很有帮助,因为这种方法避免了键错变量名和误建新变量的可能性(例如,将 MyXMLString=) 错写成 MyXLMString=...。



更重要的一点也许是,声明的变量比未声明的变量速度更快。由此,脚本在运行时每次用到未声明的变量时,按名称引用它。另一方面,声明的变量是有顺序的,要么以编译时间,要么以运行时间。以后,声明的变量都按此顺序引用。因为 Option 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 ' do the resolution of blah ONCE

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 数组。就性能而言,如果计算机的物理内存大小有限,最好将数组的初始维数设置为其最不利的情况 - 或将维数设置为其最佳的情况,然后再按需要重新确定维数。这并非意味着,如果知道您不需要内存时,就随便分配几兆字节的内存。



下面的代码给您显示使用 Dim 和 Redim 不当的情形。



<%

Dim MyArray()

Redim MyArray(2)

MyArray(0) = “hello”

MyArray(1) = “good-bye”

MyArray(2) = “farewell”

...

' some other code where you end up needing more space happens, then ...

Redim Preserve MyArray(5)

MyArray(3) = “more stuff”

MyArray(4) = “even more stuff”

MyArray(5) = “yet more stuff”

%>



最好一开始就将数组的初始大小 Dim 正确(在本例中,是 5)比 Redim 数组使其更大好得多。您可能浪费一些内存(如果您没有使用所有的元素),但获得的好处是速度变得更快。



微软建议的ASP性能优化28条守则(一)

'http://www.etoow.com/html/2007-02/1170411569-4.html

微软建议的ASP性能优化28条守则(一)

·上一篇:微软建议的ASP性能优化4 >>    ·下一篇:多个域名绑定一个空间互不影响 >>
推荐文章
最新文章