autoeventwireup性能成本

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

这是一个asp.net 2.0项目。

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

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

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

来自MSDN文章。

.NET应用程序中的性能提示和技巧

避免使用Autoeventwireupfunction

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

知识库文章:

如何使用Visual C#.NET在ASP.NET Web窗体中使用AutoEventWireup属性

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

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

性能差异可以忽略不计。

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

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

这是我希望默认的function。