一直以来,看到的相关资料都强调,ASP程序中,尽可能少在ASP代码和HTML代码之间切换,以提高程序的执行效率,也就是说,假设有下面一段两段写*不同的代码:
代码1:
==========================
<% if a>b then %>变量a大于b<%end if%>
==========================
代码2:
============================
<%
if a>b then
response.write "变量a大于b"
end if
%>
=============================
代码2要比代码1的执行效率高,因为它少了在ASP脚本程序代码和HTML代码之间的切换,那么实际情况是不是这样的呢?执行效率到底相差多少呢?为此,前段时间我做了个实验,即执行500*500次循环,每次输入一个字母,如下两种写*:
1.asp:
===========================
<%
starttime=timer()
for i=1 to 500
for j=1 to 500
response.write "a"
next
response.write " End"&chr(13)&chr(10)
next
endtime=timer()
response.write "程序执行时间:"&(endtime-starttime)*1000&"毫秒"
%>
==============================================
2.asp
==============================================
<%
starttime=timer()
for i=1 to 500
for j=1 to 500
%>a<%
next
%> End
<%
next
endtime=timer()
response.write "程序执行时间:"&(endtime-starttime)*1000&"毫秒"
%>
==============================================
可以看出,2.asp每次都要切换,而1.asp不需要,采用response对象的write方*输出。在同一台机器上同时开两个浏览器,分别执行数次,得到的结果令人惊讶,1.asp执行时间基本上都是171毫秒,而2.asp则为125毫秒左右,我的计算机为DELL DIMENSION 4500S,P4 1.7G CPU 256 M 内存。大家可以自己测试测试,有不同意见共同探讨。
可以看出,用response.write输出的效率根本不如直接切换,我个人猜测,原因可能是用response对象输出时每次都要调用response对象,降低了执行效率,而在ASP脚本和HTML之间的切换相对简单容易,从而效率较高,看样子资料不可不信,亦不可全信啊。