我一直在寻求提高我的asp.net页面性能,是否值得将autoeventwireup从true更改为false并添加事件处理程序或性能损失是否非常小?
这是一个asp.net 2.0项目。
答案 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也将其连接起来)
这是我希望违反的功能。