2010-01-13 4 views

Répondre

5

En supposant que vous le comparez à une référence de variable locale, il n'y a aucune différence; les deux vont émettre exactement la même IL. (Au moins en mode Release)

Cependant, si vous le comparez à des invocations répétées d'une propriété ou d'un indexeur, With sera un peu plus rapide, et si vous le comparez aux invocations répétées d'une méthode, ça pourrait être beaucoup plus rapide. (Le mot-clé With va créer une variable locale et l'affecter à l'objet que vous With « d, la méthode ne sera appelée une fois plutôt que sur chaque ligne)

+1

+1. Bien que je dirais que vous devriez seulement vous inquiéter de ces différences de performance si vous avez mesuré et trouvé un goulot d'étranglement de performance sérieux dans un bloc de code spécifique qui utilise With. "La micro-optimisation prématurée est la racine de tous les maux" – MarkJ

+0

@MarkJ Je parle d'une énorme opération par lots (1000000+) entrées – Shimmy

+0

Je ne savais pas que vous pouviez utiliser 'With' avec une méthode. Cool! – toddmo

2

Il n'y a aucun coût de performance d'exécution. C'est juste du "sucre syntaxique" pour rendre votre code plus joli.

0
sub xyz (ByRef param as MyObj) 

'Local ref, same as with 

dim o2 as YourObject = param.YourObject 

o2.callSomething() 


'Bad performance 

param.YourObject.callSomething() 

end sub 
+1

S'il vous plaît également fournir quelques explications à votre réponse quant à la façon dont il répond à la question. – brimborium

Questions connexes