空Page_Load()方法的性能影响

时间:2011-03-23 16:26:27

标签: asp.net performance webforms

将新页面或用户控件添加到ASP.NET webforms应用程序时,代码隐藏类包含一个空的Page_Load()事件处理程序:

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

我有一个现有的网络应用程序,其中许多页面和控件仍然包含这些空事件处理程序(它们未被使用)。

问题:由于这些空事件处理程序是否会对性能产生影响,是否应将其从所有页面和控件中删除?

请注意:由于调用了空事件处理程序,我不是主要(或不仅仅)担心任何运行时开销。我还想知道页面(标记)是JIT编译的任何开销(因为事件处理程序必须连接到事件 - 可能使用一些反射代码)。

更新:到目前为止还没有真正的答案,所以我不接受任何一个。

3 个答案:

答案 0 :(得分:4)

AutoEventWireup未在编译时完成。当它设置为true时,运行时必须使用Delegate.CreateDelegate方法查找每个页面事件处理程序。这是一篇很好的文章,描述了这种行为:Inside AutoEventWireup

在SO上也有类似的问题:autoeventwireup performance cost

答案 1 :(得分:2)

虽然必须调整堆栈帧以进入和离开您的方法(并且什么都不做)而不是简单地调用基本实现(在这种情况下为System.Web.UI.Page ),但性能影响非常小并且很可能无法测量所以你应该没事。

答案 2 :(得分:0)

我很确定Page_Load是否存在。很像PreRender,或Page_Init。

删除它,对性能无效。