我正在考虑在我正在开始的新项目中使用ASP.NET,我想知道它是否比传统ASP更快。我已经使用经典多年了,从来没有碰到任何问题,但我真的想从三者中选出最快的。
感谢您的帮助!
答案 0 :(得分:9)
运行最快?最快开发一个网站?发生问题时最快解决问题?最快培养新开发人员?
如果写得好,所有人都会快速 足够 。如果没有,所有人都会慢慢跑。我认为你需要考虑你的目标是否有效。
答案 1 :(得分:3)
对于一个.Net是编译的,VBScript是一种脚本语言。只是.Net被编译而且经典不会给.Net带来巨大的优势。
PHP是一种脚本语言,未编译,比.Net ...慢10倍
答案 2 :(得分:3)
作为一个古老的经典ASP'er,我不得不说ASP.Net是要走的路 我最初确实赞成Classic而不是。当2.0出现时我没有。 .Net是编译的,框架很广泛。很难坚持使用十年前的网络平台。
答案 3 :(得分:3)
除非您有 SuperSite(如StackOverflow),否则您的主要性能问题是:
这些都与ASP Classic或.Net
无关但是,选择ASP.Net,因为:
Application_Error
让您高枕无忧。答案 4 :(得分:2)
我正在和一个朋友争论这个话题。他认为Classic ASP更快。所以我用谷歌搜索发现了这个老问题,没有别的。 因此,我决定对ASP.NET和Classic ASP进行速度测试,结果令人难以置信!
我在以下两种情况下在相同的环境中进行了测试:
1-使用ADODB查询具有超过500.000行的SQL数据库表。与asp.net和经典asp。 ASP.NET需要133000毫秒 经典ASP需要5000毫秒
ASP.NET代码:
var conn = new ADODB.Connection();
conn.Open(@"Driver={SQL Server};Server=.\sql2008;Database=Db;User Id=sa;Password=pwd");
ADODB.Recordset rs = new ADODB.Recordset();
var sql = "SELECT * From tRep";
rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockBatchOptimistic, 0);
while (rs.EOF == false)
rs.MoveNext();
经典ASP代码:
Set dbconn = CreateObject("ADODB.Connection")
dbconn.open "Driver={SQL Server};Server=.\sql2008;Database=Db;User Id=sa;Password=pwd"
set rs=dbconn.execute("SELECT * From trep")
while not rs.eof
rs.movenext
wend
dbconn.Close
2-我的第二个测试与第一个测试相同,在ASP.NET和Classic ASP中都使用ADO.NET(使用ComVisible .Net程序集)
ASP.NET查询数据库需要2155ms,经典ASP需要1745ms 这是我的代码:
//ASP.NET Codes:
var i = 0;
var result = "";
double av = 0;
var runs = 50;
for (var j = 0; j < runs; j++)
{
var t1 = DateTime.Now;
var CS = @"data source=.\sql2008;initial catalog=Db;user id=sa;password=pwd;multipleactiveresultsets=True;";
var Query = "SELECT * From trep";
using (var conn = new SqlConnection(CS))
{
conn.Open();
using (var cmd = new SqlCommand(Query, conn))
{
using (var dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
if (dr.HasRows)
{
while (dr.Read())
{
var x = dr[0];
i++;
}
}
}
}
}
var t2 = DateTime.Now;
av = av + (t2 - t1).TotalMilliseconds;
result += "\r\nRun " + (j + 1) + ": " + (t2 - t1).TotalMilliseconds;
}
result += result + "\r\nAVG=" + (av / runs / 1000);
“经典ASP代码:
Set db = CreateObject("ADONET.AdoDotNet")
runs=50
av=0
for i=1 to runs
t1=timer()
xx= db.ExecuteQuery("SELECT * From trep","data source=.\sql2008;initial catalog=Db;user id=sa;password=pwd;multipleactiveresultsets=True")
t2=timer()
response.write("Run "&i&" Total Time(sec):"&(t2-t1)&"<br>")
av=av+t2-t1
next
g=av/runs
response.write("avg:"&g&"<br>")
ComVisible ADONET.AdoDotNet类是:
[ComVisible(true)]
public class AdoDotNet
{
[ComVisible(true)]
public int ExecuteQuery(string Query,string CS)
{
var i = 0;
//var ds = new DataSet();
using (var conn=new SqlConnection(CS))
{
conn.Open();
using(var cmd = new SqlCommand(Query, conn))
{
using (var dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
if (dr.HasRows)
{
while (dr.Read())
{
var x = dr[0];
i++;
}
}
}
}
}
return i;
}
}
有趣的是,您增加运行次数后,ASP.NET会花费更多时间执行代码!
答案 5 :(得分:1)