2005-10-03

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

来源: 本站收集整理 作者:佚名 评论 0 条
 

实际上,访问 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 数组使其更大好得多。您可能浪费一些内存(假如您没有使用所有的元素),但获得的好处是速度变得更快。


共9页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 9 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:网站版面设计的介绍  
下一篇:Java还能走多远
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号