2008-11-02 7 views
7

Je cherchais à améliorer les performances de ma page asp.net, vaut-il la peine de changer autoeventwireup de vrai à faux et d'ajouter les gestionnaires d'événements ou la pénalité de performance est-elle très faible?performance autoeventwireup coût

Ceci est un projet asp.net 2.0.

Répondre

10

Le démarrage n'est pas effectué au moment de la compilation. C'est fait à l'exécution. Comme cela est décrit dans cet article:

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

Il y a une pénalité de performance en raison des appels à CreateDelegate qui doit être fait à chaque fois qu'une page a été créé. Le coup de performance est probablement négligeable, mais il existe.

1

La différence de performance est négligeable.

+1

Quelle preuve avez-vous pour cette réclamation? – Jon

+3

le fardeau de la preuve est sur l'optimizor –

-1

La performance est 0, car une fois câblé (une fois que votre application est compilée en mémoire), il n'a plus jamais à le faire. Ce que je veux dire par là, c'est que le framework ASP.NET ne répète pas constamment toutes les méthodes par nom pour voir s'il doit être câblé. Mais, je vous suggère fortement de le désactiver, car il provoque généralement des problèmes de chargement de deux pages ou autre (si vous câblez un événement vous-même, mais en le nommant d'une certaine manière, ASP.NET le connecte aussi).

C'est une fonctionnalité que je souhaite désactivée par défaut.

5

De l'article MSDN.

Performance Tips and Tricks in .NET Applications

Évitez la fonction AutoEventWireup

Au lieu de compter sur AutoEventWireup, remplacer les événements de la page. Par exemple, au lieu d'écrire une méthode Page_Load(), essayez de surcharger la méthode publique OnLoad(). Cela permet à l'exécution d'effectuer un CreateDelegate() pour chaque page.

article Base de connaissances:

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

Quand éviter le réglage de la valeur de l'attribut AutoEventWireup à true

Si la performance est un facteur clé, ne définissez pas la valeur de la L'attribut AutoEventWireup à true. L'attribut AutoEventWireup requiert l'infrastructure de page ASP.NET pour appeler la fonction CreateDelegate pour chaque page de formulaire Web ASP.NET. Au lieu d'utiliser le branchement automatique, vous devez remplacer manuellement les événements de la page.