Quelle est la conséquence des performances en utilisant le mot-clé 'With' dans vb.net au lieu d'utiliser la réutilisation du nom d'instance encore et encore?VB.NET 'Avec' une déclaration de performance?
Répondre
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)
Il n'y a aucun coût de performance d'exécution. C'est juste du "sucre syntaxique" pour rendre votre code plus joli.
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
S'il vous plaît également fournir quelques explications à votre réponse quant à la façon dont il répond à la question. – brimborium
+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
@MarkJ Je parle d'une énorme opération par lots (1000000+) entrées – Shimmy
Je ne savais pas que vous pouviez utiliser 'With' avec une méthode. Cool! – toddmo