Question

Combien ça coûte pour mes performances programmes si j'ajouter des méthodes d'extension à elle?
Est-ce que ça marche plus lent ou peut-être se charge plus lente?
Merci.

Était-ce utile?

La solution

  

Combien cela va-t-il coûter pour mes programmes   performances si j'ajouter des méthodes d'extension   à elle? Est-ce que ça marche plus lent ou peut être   se charge plus lente?

Il n'y aura pas de succès performance. Méthodes d'extension sont des méthodes vraiment statiques.

Autres conseils

Une méthode d'extension est juste du sucre syntaxique appliqué à une méthode statique.

En théorie, une méthode statique est plus rapide qu'une méthode d'instance non-virtuelle (pas besoin de vérifier this null) qui à son tour est plus rapide qu'une méthode d'instance virtuelle (pas besoin de regarder la mise en œuvre à l'appel).

En théorie également, pourrait se débarrasser Optimisations de ces différences. Il est également surévalué en termes de statique en ce qui concerne les méthodes d'extension, puisque l'objet est probablement va être traitée de la manière d'une telle que nécessite un nul contrôle (explicite ou implicite de la manière dont elle est l'utilisation) de toute façon.

Dans la pratique, les chances sont que quelle que soit la méthode d'extension ne sera beaucoup, beaucoup plus d'impact que si elle ou de l'extension par exemple.

Je rapidement les performances testé cela en utilisant des méthodes d'extension entières dans une boucle très longue course et a constaté que dans les cas que j'ai testé, la performance est généralement identique. Lors du débogage ou l'exécution d'ensembles non optimisés, des méthodes d'extension couraient deux fois plus lentement que mes cas de contrôle, cela est logique parce que le débogueur ne peut pas inline ces méthodes et doit garder une trace du callstack, etc.

Ainsi, dans un ensemble prêt à la libération, aucune pénalité de performance.

Il ne sera certainement pas charger plus lent, comme le chargement d'un programme ne dépend pas des voies d'exécution du programme.

Pour ce qui est en cours d'exécution plus lentement? Seulement mesurer le temps pris pour la méthode d'extension et la méthode non-prolongation montrera pour certains. Je soupçonne que la différence ne sera pas significative même si elle est effectivement mesurable.

La considération importante devrait toujours être « fait la méthode d'extension rendre le code plus lisible et plus facile à comprendre et à maintenir ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top