2008-11-02 2 views
7

Я искал улучшение производительности страницы asp.net, стоит ли менять autoeventwireup с true на false и добавлять обработчики событий или это очень малое ограничение производительности?autoeventwireup performance cost

Это проект asp.net 2.0.

ответ

10

Уборка не производится во время компиляции. Это делается во время выполнения. Как описано в этой статье:

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

Там IS штраф производительности из-за звонки на CreateDelegate, которые должны быть сделаны каждый раз, когда была создана страница. Снижение производительности, вероятно, незначительно, но оно существует.

1

Разница в производительности пренебрежимо мала.

+1

какие доказательства у вас есть для этого требования? – Jon 2008-11-05 20:05:22

-1

Производительность 0, поскольку после подключения (когда приложение скомпилировано в память), это никогда не должно повторять это. Я имею в виду, что структура ASP.NET не постоянно перебирает каждый метод по имени, чтобы убедиться, что он должен быть подключен.

Но я настоятельно рекомендую вам отключить его, поскольку он обычно вызывает проблемы с нагрузкой на две страницы или что-то в этом роде (если вы подключаете событие самостоятельно, но из-за того, что он называет его определенным образом, ASP.NET также подключает его).

Это функция, которая, как мне хотелось бы, была отключена.

5

Из статьи MSDN.

Performance Tips and Tricks in .NET Applications

Избегайте Функция AutoEventWireup

Вместо того, чтобы полагаться на AutoEventWireup, переопределять события от страницы. Например, вместо написания метода Page_Load() попробуйте перегрузить общедоступный метод void OnLoad(). Это позволяет времени выполнения от создания CreateDelegate() для каждой страницы.

статье базы знаний:

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

Когда следует устанавливать значение атрибута AutoEventWireup истина

Если производительность является ключевым фактором, не установить значение из Атрибут AutoEventWireup соответствует true. Атрибут AutoEventWireup требует, чтобы структура страницы ASP.NET вызывала функцию CreateDelegate для каждой страницы веб-формы ASP.NET. Вместо автоматического подключения вы должны вручную переопределить события со страницы.