c# toString() Leistung
Ich bin neugierig auf die ToString()
Methode in C#. Nehmen Sie zum Beispiel die folgenden:
object height = 10;
string heightStr = height.ToString();
Wenn ich rufe ToString()
auf height
bekomme ich einen string-Typ zurück. Ist die Laufzeit allokierung von Speicher für diese Zeichenfolge?
- ToString() ist für Menschen, die perf ist ein nicht-Problem, da Sie nicht Lesen schnell. Sollte trotzdem sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, die Laufzeit wird Speicher für eine beliebige Zeichenfolge-Objekt, das Sie erstellen oder Anfrage, einschließlich eines, das nach der Rückkehr von einem Methodenaufruf.
Aber Nein, das ist absolut nicht etwas, das Sie haben sorgen zu machen. Es wird nicht alle spürbaren Effekt auf die Leistung Ihrer Anwendung, und Sie sollten nie der Versuchung erliegen, zu optimieren, code vorzeitig.
Den
Int32.ToString
Methode ist extrem schnell. Es ruft nach unten auf native code geschrieben auf der Ebene der CLR, die wahrscheinlich nicht zu einem performance-Engpass in alle Anwendung.In der Tat, die real performance-problem hier wird boxing, das ist der Prozess der Umwandlung eines Wert-Typ
object
und wieder zurück. Dies wird auftreten, weil Sie erklärte, dieheight
variable als Typobject
, und dann jeweils einen integer-Wert zu.Es ist eine weit bessere Idee zu erklären
height
explizit als Typint
etwa so:int
gibt es wird eine explizite int.ToString(), aber das ist nicht immer der Fall.Ja. Erstellen einer neuen Instanz einer Klasse (wie gemacht wird mit der Klasse "string" in diesem Fall) wird Speicher für die Instanz.
String
Klasse, sondern weisen das Ergebnis derToString
- Funktion, um eine variable Eingabe alsstring
. Das geht so erstellen Sie eine neue Instanz der Klasse, auch wenn es nicht unveränderlich.