我有一个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运行至少与卡西尼一样快?
答案 0 :(得分:10)
配置Web应用程序使用的应用程序池以启用32位应用程序:
我使用了一些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?