Est-ce que la performance est importante s’il y a un `else` après le premier` return`?

J’ai maintenant vu deux manières différentes de créer une méthode de retour booléen:

bool Case1() { if (A) return true; else return false; } bool Case2() { if (A) return true; return false; } 

Lequel est le plus rapide? Est-il judicieux de ne pas écrire else simplement pour enregistrer une ligne, pour la rendre plus claire, ou existe-t-il un gain de performance négligeable?

Non.

Même lorsque nous examinons leur code IL , ils ont le même code IL , de sorte qu’il n’y a pas de différence de performance entre eux. Utilisez celui qui est plus lisible pour vous .

 .method private hidebysig instance bool Case1() cil managed { // Code size 9 (0x9) .maxstack 1 .locals init ([0] bool CS$1$0000, [1] bool CS$4$0001) IL_0000: nop IL_0001: ldc.i4.0 IL_0002: stloc.1 IL_0003: ldc.i4.1 IL_0004: stloc.0 IL_0005: br.s IL_0007 IL_0007: ldloc.0 IL_0008: ret } // end of method Program::Case1 

Regardez ces morceaux de code pour leurs performances;

http://ideone.com/8Sc7Ho -> Mémoire: 33856 kB

http://ideone.com/MrnaAl -> Mémoire: 33808 kB

Donc, si vous les utilisez même 10 000 fois, vous n’avez rien à craindre.

Le compilateur c # devrait générer le même IL pour ces deux cas, il ne devrait donc pas y avoir de différence de performances. Vous pouvez toujours afficher l’IL généré si vous êtes curieux de ce qui se passe réellement (tentative d’apprendre à pêcher).

IMHO, Case1 est plus facile à lire, ce qui vaut quelque chose. Mon deuxième choix serait le return A; (comme mentionné dans d’autres réponses). Si A n’est pas un bool cependant, il existe une conversion implicite qui peut être déroutante dans certains cas.

Je pense que la lisibilité devrait être gagnante à moins que vous ne puissiez prouver avec un profileur que vous avez un problème.

Il n’y aura aucune différence (négligeable). Du sharepoint vue du codage, vous devriez vraiment faire:

 return A; 

Mais en supposant que le code soit juste pour un exemple, alors je suggérerais:

 bool Case3() { bool retValue; if (A) { retValue = true; } else { retValue = false; } return retValue; } 

De cette façon, vous êtes très clair sur ce qui se passe et sur la valeur à restituer. Si vous devez revenir en arrière et modifier les fonctionnalités de la méthode, c’est beaucoup plus facile.

Performance sage ils sont les mêmes. Du sharepoint vue des bonnes pratiques de codage, préférez ce dernier – pour qu’il soit clair que la fonction renvoie toujours une valeur valide.

Ce sont les mêmes.

Si A est faux, il y aura un saut dans la déclaration de return false dans les deux cas.