Ceci est une sorte de question noob. J'ai une simple propriétéQuand est une propriété "inline" par des optimisations de code
bool IsRoot { get { return parent==null; } }
que j'appelle encore et plusieurs fois d'autres propriétés et méthodes au sein de la classe (et les classes dérivées)
J'aime garder comme ça, car il rend le code lisible (à moi), mais j'ai peur que tous les appels IsRoot
vont me ralentir car ils pourraient ne pas être "inline" dans le code de version final. Ce que je veux dire par "inline" est qu'ils sont remplacés par une copie de l'évaluation parent==null
à la place de get_IsRoot()
.
Quelqu'un peut-il m'expliquer quand (ou si) les propriétés sont en C#, et pour les applications orientées vers les performances, quelles sont les propriétés à éviter ou non?
EDIT_1: Réponse courte est: Propriétés se traduire par des appels purs de fonction et ils pourraient ou pourraient ne pas être inline selon ce que décide JIT. Faites confiance au système pour faire les bons choix et ne vous inquiétez pas des choses qui pourraient affecter les choses entre 5% et 10%, à moins qu'un profileur ne soit utilisé et que le résultat final soit ajusté pour la performance.
Merci pour les liens SO communauté, et j'espère qu'il y avait un moyen d'attribuer plusieurs réponses correctes. Désolé je devais en choisir un.
Grande question. Ma conjecture est que ce sera presque toujours en ligne. Mais je ne suis pas sûr. Vous pouvez générer le code CLI produit par le compilateur et voir ce qu'il en est.John Skeet répondrait certainement à cette question s'il est là. –
+1 Mis à part l'appât «premature-optimization!», C'est une question intéressante. :) –
@Justin Une propriété appelée 'IsRoot' qui renvoie le résultat d'une comparaison booléenne rendrait * plus de sens * s'il s'agissait d'une méthode appelée' MakeRoot() '? Um ...? –