Die Leistungseinbußen bei Verwendung von ref-anstatt die gleichen Arten?

Hallo dies ist etwas, das ist wirklich stört mich und ich hoffe jemand hat eine Antwort für mich. Ich habe das Lesen über ref (und out) und ich versuche herauszufinden, wenn ich verlangsame meinen code mit refs. Häufig werde ich ersetzen, so etwas wie:

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

mit

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

weil in meinen Augen diese

AddToInt(ref _value, _add);

ist leichter zu Lesen, UND code, als diese

_value = AddToInt(_value, _add);

Ich weiß genau was ich Tue, auf den code mit ref im Gegensatz zum zurückgeben eines Wertes. Die Leistung ist jedoch etwas, was ich ernst nehmen, und anscheinend die Dereferenzierung und die Bereinigung ist viel langsamer wenn Sie refs.

Was ich wissen möchte ist warum jeden post den ich lese sagt, dass es sehr wenige Orte, die Sie in der Regel passieren eine ref (ich weiß die Beispiele sind konstruiert, aber ich hoffe, Sie bekommen die Idee), wenn es scheint mir, dass die ref Beispiel ist kleiner, sauberer und genauer.

Ich würde auch zu gerne wissen, warum ref wirklich langsamer ist als Rückgabe einen Wert eingeben und mir, es scheint mir, wenn ich im Begriff war, zu Bearbeiten die Funktion Wert eine Menge, bevor es wieder,,, es wäre schneller Verweis auf die eigentliche variable zu Bearbeiten, im Gegensatz zu einer Instanz der variable zu kurz, bevor es gereinigt aus dem Speicher.

  • Ich würde bevorzugen in der Regel gibt einen Wert zurück, für stilistische Gründe, da ich wie nebenwirkungsfreie Funktionen.
  • Sie versuchen, herauszufinden, die Leistung Kosten? Fragen Sie einen profiler, Fragen Sie nicht uns!
  • Der erste Fall ist einfacher zu Lesen, denn Sie nannte Ihre Methode entsprechend. So etwas wie _value = Add(_value, _add); oder _value = SumOf(_value, _add); ist besser lesbar für mich.
  • mögliche Duplikate von C# 'ref' - Schlüsselwort, Leistung
  • Ergebnisse von meinem kleinen benchmark
InformationsquelleAutor user1044057 | 2011-11-13
Schreibe einen Kommentar