为什么IIS比ASP.NET Development Server慢?

时间:2012-10-18 12:02:58

标签: asp.net performance iis cassini

我有一个ASPX网页,可以执行一些复杂的操作和数据库调用。当我通过运行ASP.NET Development Server(Cassini)查看网页时,它需要 200ms

然后,没有任何代码更改和配置更改,我将网站部署到我的本地计算机IIS 7并再次查看相同的网页。需要 2.0秒慢10倍

我认为IIS应该比卡西尼快(或至少和卡西尼一样快)。

为了进一步调查,我创建了一个新页面test1.aspx,它只包含一个在Page_Load中运行9000万次的空for循环。在卡西尼号,它需要大约200毫秒。在IIS中,它需要300毫秒(慢50%)。

使IIS慢于卡西尼的原因是什么?或者,也许是一个更好的问题,我怎样才能使IIS运行至少与卡西尼一样快?

1 个答案:

答案 0 :(得分:10)

快速简答:

配置Web应用程序使用的应用程序池以启用32位应用程序:

Set Enable 32-bit applications to True

详细演练:

我使用了一些performance profiling tools(有些是free)来比较性能并找出瓶颈。免费EQATEC Profiler足以让我比较运行Cassini和IIS生成的两个报告,并确定导致问题的方法。但是,该方法包含太多行,我无法确定导致问题的确切行。

然后Redgate ANTS派上用场。通过使用行级详细信息对方法进行分析,我发现RegEx的运行速度非常慢。

进一步搜索引导我得到答案:RegEx.Match is much slower in IIS compared to Development Server (Cassini)。我在IIS 7中使用Windows 7 64位。将“启用32位应用程序”设置为True可以解决问题。


此外,有关将IIS运行为32位或64位的略微相关的读数:

  

64位服务器在用于数据库时更有效   SQL Server或其他数据管理服务器(假设是企业)   电子邮件服务器(如Exchange),而不是 处理服务器 ,例如 IIS   或者工作人员处理它。

     

每次查找都需要64位指针   一切都慢一点。

来源:What are the pros and cons of running IIS as 32bit vs 64bit on a 64bit OS?