15种ASP技巧(2)
局部变量是在子程序和函数中定义的(也就是常说局部范围的变量),这些变量被编译成数字指向并放入一张表中。这些局部变量的指向可以通过一次编译完成。而全局变量则是在运行时被执行的。这就意味着局部变量的存取要比全局变量快好几倍。而且,多维全局变量是其中最慢的,当第一次使用一个多维全局变量时,在新的对象产生之前,就要在整个对象模型中搜索一遍同名的对象。
以下是一个非常常见的例子:
Foo.bar.blah.baz = Foo.bar.blah.qaz(1)
If Foo.bar.blah.zaq = Foo.bar.blah.abc then
运行时产生如下结果:
1)变量Foo被定义为一个全局变量2)变量bar被定义为Foo的一个成员3)变量blah被定义为Foo.bar的一个成员4)变量qaz被定义为Foo.bar.blah的一个成员5)调用Foo.bar.blah.quaz(1)6)重复1至3。系统并不知道如果调用qaz改变了对象模型1-3步必须重新执行7)定义baz为Foo.bar.blah的成员,输出值8)重复1-3,执行zaq9)重复1-3,执行abc
正如你看到的,效率极其低下,最快的方法就是把这些代码写在vbscript中:
Set myobj = Foo.bar.blah ' do the resolution of blah ONCEMyobj.baz = myobj.qaz(1)If Myobj.zaq = Myobj.abc then
*技巧6:避免重复定义数组
当我们在使用dim时,避免重新定义数组。因为你可能要用redim去重新定义数组的大小。至于要做这样的操作的话,如果你的机器内存不是很大,那么最好在一开始就考虑到最坏的打算去设置数组的长度或者设置最佳状态时的长度,在非常必要时才使用redim。当然这样并不意味着要去增加内存,如果你不是很需要的话。
以下举例说明不恰当的使用redim
其实在开始就定义myarray(5),而以后需要的话再用redim去增加他的大小,这样的话可能会占用一些内存,但速度就要快得多了。
*技巧7:避免公用(全局)变量
不要使用用public定义的变量。如果你是写vbscript或在ActiveX控件或java applet中存取变量,那么尽可能避免公用变量。public关键词通常是为以后使用设计的,既然public不能给你带来什么好处,那最好还是用dim吧。
*技巧8:使用绝对路径
如果可能的话尽量避免使用相对路径,而使用绝对路径。使用相对路径将需要IIS返回当前服务器路径,这就意味着对IIS的特殊请求造成执行速度低下。
注:慢点就慢点呗,使用相对路径移植什么的都方便得多呀。
内容版权声明:除非注明,否则皆为本站原创文章。