asp的性能

| |
[不指定 2006/06/07 01:59 | by Else ]
技巧 8:迟一点获得资源,早一点释放资源

  这里是一个小技巧供您参考。一般来说,最好迟一点获得资源,早一点释放资源。这适用于 COM 对象以及文件句柄和其它资源。  

  这种优化方法主要用于 ADO 连接和记录集。当您使用完记录集,比方说在显示一个表及其数据之后,应立即释放它,而不是等到页面结束时再释放。将 VBScript 变量设置为 Nothing 是最好的做法。不要让记录集超出作用域之外。而且,要释放任何相关的 Command 或 Connection 对象(在将记录集或连接设置为 = Nothing 之前,不要忘记调用 Close())。这会缩短数据库必须为您准备资源的时间,并尽快释放数据库到连接池的连接。

作者:Else 's Blog
地址:http://www.aixq.com/post/256/
版权所有。转载时必须链接形式注明作者和原始出处及本声明!
  • 中查看更多“asp的性能”相关内容
  • 中查看更多“asp的性能”相关内容
  • 中查看更多“asp的性能”相关内容
  • 中查看更多“asp的性能”相关内容
  • 中查看更多“asp的性能”相关内容
  • 中查看更多“asp的性能”相关内容
  • 代码 程序 编程 | 评论(5) | 引用(0) | 阅读(3509)
    Else
    2006/06/07 02:08
    技巧 10:使用显式选项

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

       更重要的一点也许是,声明的变量比未声明的变量速度更快。由此,脚本在运行时每次用到未声明的变量时,按名称引用它。另一方面,声明的变量是有顺序的,要么以编译时间,要么以运行时间。以后,声明的变量都按此顺序引用。因为 Option Explicit 强制变量声明,它能确保声明所有变量,因此访问的速度也很快。
    Else
    2006/06/07 02:09
    技巧 11:在子例程和函数中使用局部变量

       局部变量是那些在子例程和函数内声明的变量。在函数或子例程内,局部变量访问比全局变量访问更快。局部变量的使用也会使代码更清晰,因此应尽量使用局部变量。
    Else
    2006/06/07 03:10
    技巧 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 程序设计。
    Else
    2006/06/07 03:15
    技巧 17:使用 <OBJECT> 标记例示对象

       如果要引用不在所有代码路径(特别是服务器或应用程序作用域的对象)中使用的对象,使用 Global.asa 中 <object runat=server id=objname> 标记声明它们,而不使用 Server.CreateObject 方法。Server.CreateObject 能立即创建对象。如果以后不再使用该对象,您就浪费了资源。<object id=objname> 标记声明 objname,但在其方法或属性第一次使用以前,不会创建 objname。

       这又是一个惰性计算的例子。
    Else
    2006/06/07 05:32
    尽可能使用 Server.Transfer 代替 Response.Redirect
    分页: 1/1 第一页 1 最后页
    发表评论
    表情
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    打开HTML
    打开UBB
    打开表情
    隐藏
    昵称   密码   游客无需密码
    网址   电邮   [注册]