asp和asp.net对比测试报告 一、测试环境 cpu :奔2赛扬366 内存:256M SD windows2000 sp2 IIS 5 Microsoft .NET Framework IIS打开页面缓存 IE6.0关闭了页面缓存(设置为:每次访问此页时检查) asp.net测试文件均为非第一次运行 二、测试项目 1、循环执行效率 从0连续加1共5千万次所花费的时间 (1) asp.net 代码: <% dim x,y as integer dim time1,time2 y=0 time1=timer() For x=1 to 5000000 y=y+1 Next time2=timer() response.Write ("注意:小数点前面是秒,后面是毫秒<br>从0连续加1共5千万次<br>运算结果:" & y & "<br>循环开始:" & time1 & "<br>循环结束:" & time2 & "<br>用时:" & time2-time1) %> 结果: 注意:小数点前面是秒,后面是毫秒 从0连续加1共5千万次 运算结果:5000000 循环开始:79879.7221632 循环结束:79879.8223072 用时:0.100143999996362 (2)asp <% dim x,y dim time1,time2 y=0 time1=timer() For x=1 to 5000000 y=y+1 Next time2=timer() response.Write ("注意:小数点前面是秒,后面是毫秒<br>从0连续加1共5千万次<br>运算结果:" & y & "<br>循环开始:" & time1 & "<br>循环结束:" & time2 & "<br>用时:" & time2-time1) %> 结果: 注意:小数点前面是秒,后面是毫秒 从0连续加1共5千万次 运算结果:5000000 循环开始:79946.55 循环结束:79959.79 用时:13.24219 2、数据库访问(12096条记录,Access数据库) (1)ASP.NET环境下用Adodb(对asp.net环境测试代码做了所需的最低程度的更改) 代码: <%@Page aspcompat=true Language = VB%><% dim oconn,rs,sql,time1,time2 time1=timer() oconn=Server.CreateObject("ADODB.Connection") oConn.Open ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("data.mdb")) rs=Server.CreateObject("ADODB.Recordset") sql="select * from 访客留言板" rs.open(sql,oconn,1,1) do while not rs.eof response.write (rs("留言者").value) rs.movenext loop rs.close rs=nothing time2=timer() response.Write ("注意:小数点前面是秒,后面是毫秒<br>从数据库返回12096条记录<br>循环开始:" & time1 & "<br>循环结束:" & time2 & "<br>用时:" & time2-time1) %> 结果: 注意:小数点前面是秒,后面是毫秒 从数据库返回12096条记录 循环开始:81230.4644352 循环结束:81237.244184 用时:6.77974879999238 (2)asp用Adodb 代码: <%option explicit dim oconn,rs,sql,time1,time2 time1=timer() set oconn=Server.CreateObject("ADODB.Connection") oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("data.mdb") set rs=Server.CreateObject("ADODB.Recordset") sql="select * from 访客留言板" rs.open sql,oconn,1,1 do while not rs.eof response.write rs("留言者") rs.movenext loop rs.close set rs=nothing time2=timer() response.Write ("注意:小数点前面是秒,后面是毫秒<br>从数据库返回12096条记录<br>循环开始:" & time1 & "<br>循环结束:" & time2 & "<br>用时:" & time2-time1) %> 结果: 前面是秒,后面是毫秒 从数据库返回12096条记录 循环开始:80794.82 循环结束:80798.02 用时:3.195313 (3)asp.net使用 ADO.NET。这些代码生成的输出等效于前面示例的输出,而且已被修改以符合 ASP.NET 代码块约定 代码: <%@ Page Language="VB" ContentType="text/html" ResponseEncoding="gb2312" %> <%@ Import Namespace="system.data" %><%@ Import Namespace="system.data.oledb" %> <%dim time1,time2 time1=timer() dim connstring as string="provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("data.mdb") dim sql as string="select * from 访客留言板 order by 留言日期 desc" dim objcmd as new oledbdataadapter(sql,connstring) '创建dataset对象 dim rs as new dataset() objcmd.fill(rs,"访客留言板") dim temptable as datatable=rs.tables("访客留言板") dim i as integer For i=0 to temptable.rows.count-1 response.Write (temptable.rows(i).item("留言者")) next time2=timer() response.Write ("注意:小数点前面是秒,后面是毫秒<br>从数据库返回12096条记录<br>循环开始:" & time1 & "<br>循环结束:" & time2 & "<br>用时:" & time2-time1) %> 结果: 注意:小数点前面是秒,后面是毫秒 从数据库返回12096条记录 循环开始:82160.8823104 循环结束:82163.1155216 用时:2.23321120000037 三、测试结果分析 1、循环执行效率 asp用时:13.24219 asp.net用时:0.100143999996362 值得注意的是,在asp.net测试中,当我们取消对x,y变量类型的定义integer时,即由 dim x,y as integer 变为 dim x,y 时 此时的测试结果为: 用时:13.6996991999913 比asp环境用时更多! 显然,显式声明变量类型大大改善了应用程序的执行效率。如果仅仅想把asp的文件简单的更改为aspx扩展名,性能并不能得到提高。只有真正时用了asp.net的规范,才是解决之道。 2、数据库记录访问测试 (1)ASP.NET环境下用Adodb(对asp.net环境测试代码做了所需的最低程度的更改) 用时:6.77974879999238 (2)asp用Adodb 用时:3.195313 (3)asp.net使用 ADO.NET。这些代码生成的输出等效于前面示例的输出,而且已被修改以符合 ASP.NET 代码块约定 用时:2.23321120000037 从结果不难看出,.net环境下使用ado.net访问数据库效率得到非常大的提高,如果访问更多记录的数据库,相信得到的性能改善是非常明显的。 在现阶段想把应用程序通过简单的更改使之运行在.net环境下(aspx)得到的结果是得不偿失的。
| |