Le coût de performances à l'aide de ref au lieu de retourner mêmes types?

Salut c'est quelque chose de vraiment me tracasse et je suis en espérant que quelqu'un a une réponse pour moi. J'ai lu à propos de ref (et out) et je suis en train de voir si je suis à ralentir mon code à l'aide de refs. Souvent je vais remplacer quelque chose comme:

int AddToInt(int original, int add){ return original+add; }

avec

void AddToInt(ref int original, int add){ original+=add; } //1st parameter gets the result

car à mes yeux ce

AddToInt(ref _value, _add);

est plus facile à lire ET le code de cette

_value = AddToInt(_value, _add);

Je sais précisément ce que je suis en train de faire sur le code à l'aide de ref, plutôt que de retourner une valeur. Cependant, la performance est quelque chose que je prends très au sérieux, et, apparemment, de déférence et de nettoyage est beaucoup plus lent lorsque vous utilisez réf.

Ce que j'aimerais savoir, c'est pourquoi tous les post que j'ai lu dit il y a très peu d'endroits qui vous passent un ref (je sais que les exemples sont quelque peu exagéré, mais j'espère que vous voyez l'idée), quand il me semble que le ref exemple est plus petit, plus propre et plus exacte.

J'aimerais également savoir pourquoi ref est vraiment plus lent que de retourner une valeur de type - pour moi, il me semble, si j'allais modifier la valeur de la fonction d'un lot avant de le retourner, qu'il serait plus rapide de la référence de la variable réelle pour le modifier, par opposition à une instance de cette variable, peu de temps avant, il est nettoyé de la mémoire.

Je serais normalement préfèrent retourner une valeur pour des raisons de style, car j'aime sans effets secondaires fonctions.
Vous êtes à essayer de comprendre l'impact sur les performances? Demandez à un profiler, ne nous demandez pas!
Le premier cas est plus facile à lire parce que vous avez nommé votre méthode en conséquence. Quelque chose comme _value = Add(_value, _add); ou _value = SumOf(_value, _add); est plus lisible pour moi.
double possible de C# " ref " mot-clé, de la performance
Résultats de mon petit test

OriginalL'auteur user1044057 | 2011-11-13