任何人都有基准/速度测试比较经典ASP与ASP.NET 2.0或3.5?

时间:2009-11-25 16:00:56

标签: asp.net asp-classic performance benchmarking

我正在考虑在我正在开始的新项目中使用ASP.NET,我想知道它是否比传统ASP更快。我已经使用经典多年了,从来没有碰到任何问题,但我真的想从三者中选出最快的。

感谢您的帮助!

6 个答案:

答案 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,因为:

  • 伟大而现代的工具
  • MVC很棒
  • Global.asax捕捉所有Application_Error让您高枕无忧。
  • 母版页
  • 内置会员资格
  • 服务器控件
  • 完整且真实的OOP语言
  • 更轻松的缓存管理
  • LINQ

答案 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)

如果您每秒都在讨论请求,可能需要查看此处:

http://msdn.microsoft.com/en-us/library/ms973813.aspx

微软表示asp.net明显快于asp。