autoeventwireup性能成本

时间:2008-11-02 17:49:48

标签: c# asp.net performance

我一直在寻求提高我的asp.net页面性能,是否值得将autoeventwireup从true更改为false并添加事件处理程序或性能损失是否非常小?

这是一个asp.net 2.0项目。

4 个答案:

答案 0 :(得分:10)

连接不是在编译时完成的。它是在运行时完成的。如本文所述:

http://odetocode.com/Blogs/scott/archive/2006/02/16/2914.aspx

由于每次创建页面时都必须调用CreateDelegate,因此会造成性能下降。性能损失可能微不足道,但确实存在。

答案 1 :(得分:5)

来自MSDN文章。

Performance Tips and Tricks in .NET Applications

避免使用Autoeventwireup功能

不依赖于autoeventwireup,而是覆盖Page的事件。例如,不要编写Page_Load()方法,而是尝试重载public void OnLoad()方法。这允许运行时必须为每个页面执行CreateDelegate()。

知识库文章:

How to use the AutoEventWireup attribute in an ASP.NET Web Form by using Visual C# .NET

何时避免将AutoEventWireup属性的值设置为true

如果性能是关键考虑因素,请不要将AutoEventWireup属性的值设置为true。 AutoEventWireup属性要求ASP.NET页面框架为每个ASP调用CreateDelegate函数.NET Web Form页面。您必须手动覆盖页面中的事件,而不是使用自动连接。

答案 2 :(得分:1)

性能差异可以忽略不计。

答案 3 :(得分:-1)

性能为0,因为一旦连线(一旦你的应用程序在内存中编译),它就再也不用了。我的意思是,ASP.NET框架并没有经常通过名称来检查每个方法是否应该连接起来。

但是,我强烈建议您将其关闭,因为它通常会导致双页加载或其他问题(如果您自己连接事件,但由于以某种方式命名,ASP.NET也将其连接起来)

这是我希望违反的功能。