Frage

Im Web-App bin ich Splitting-Strings und die Zuordnung Namen oder zu einer Sammlung von Zeichenketten zu verknüpfen. Gibt es einen signifikanten Leistungsvorteil Stringbuilder für eine Web-Anwendung zu verwenden?

EDIT: 2 Funktionen: Splitting einen Link in 5-10 Saiten auf. Dann in einer anderen Zeichenfolge Umpacken. Auch anhängen ich eine Saite auf einmal einen Link bei jedem Besuch der Link angeklickt wird.

War es hilfreich?

Lösung

Wie viele Saiten werden Sie verketten werden? Wissen Sie genau, wie viele es sein wird, oder es ist davon abhängig, wie viele Datensätze sind in der Datenbank etc?

Siehe mein Artikel zu diesem Thema für weitere Informationen und Richtlinien - aber im Grunde , macht keinen Unterschied in einer Web-Anwendung sein, wie teuer die String-Verkettung ist ein String vs verwendet wird.

EDIT: Ich fürchte, es ist noch nicht ganz klar von der Frage, genau das, was Sie tun. Wenn Sie einen festen Satz von Saiten haben zu verketten, und Sie können alles in einem Rutsch tun, dann ist es schneller und wahrscheinlich besser lesbar, es zu tun Verkettung verwenden. Zum Beispiel:

string faster = first + " " + second + " " + third + "; " + fourth;

string slower = new StringBuilder().Append(first)
                                   .Append(" ")
                                   .Append(second)
                                   .Append(" ")
                                   .Append(third)
                                   .Append("; ")
                                   .Append(fourth)
                                   .ToString();

Eine weitere Alternative ist es, ein Format-String natürlich zu verwenden. Das kann gut sein, die langsamste, aber die meisten lesbar:

 string readable = string.Format("{0} {1} {2}; {3}",
                                 first, second, third, fourth);

Der Teil Ihrer Frage zu erwähnen, „Hinzufügen einer Verbindung jedes Mal“ ein String obwohl für diesen Aspekt legt nahe, mit -. Alles, was natürlich führt zu einer Schleife effizienter (für mittlere bis große Zahl) ist mit String

Andere Tipps

Sie sollten unter dieser ausgezeichneten Artikel von Jon Skeet über Verketten von Strings.

Ja, verketten regelmäßige Saiten teuer ist (wirklich auf Zeichenfolge anhängt auf das Ende einer anderen). Jedes Mal, wenn eine Zeichenfolge geändert wird, .net fällt die alte Zeichenfolge und erstellt einen neuen mit den neuen Werten. Es ist ein unveränderliches Objekt.

EDIT:

String sollte mit Vorsicht und bewertet wie jeder andere Ansatz verwendet werden. Manchmal zusammen connactenting zwei Strings wird effizienter, und sollte von Fall zu Fall beurteilt werden.

Atwood einen interessanten Artikel hat im Zusammenhang mit diesem.

Warum wäre die Leistung anders in einer Web-Anwendung oder eine WinForms-Anwendung?

Mit Stringbuilder ist eine Frage der guten Praxis wegen des Gedächtnisses und der Objektzuordnung, gelten die Regeln ganz gleich, warum Sie den Code bauen.

Wenn Sie die Zeichenfolge in einer Schleife mit einer hohen Anzahl von Iterationen zu machen, dann ist es eine gute Idee, Stringbuilder zu verwenden. Andernfalls String-Verkettung ist die beste Wahl.

Zum einen sind Schreiben Sie immer noch diese Anwendung? Wenn ja, dann Performance-Tuning STOP! ZWEITENS Priorisieren Correctness über Geschwindigkeit. Ablesbarkeit ist viel wichtiger, auf lange Sicht aus offensichtlichen Gründen. DRITTENS, wissen wir nicht die genaue Lage und Code, den Sie schreiben. Wir können Sie nicht wirklich beraten, wenn diese Mikro Optimierung der Leistung Ihres Codes wichtig ist oder nicht. Messen Sie den Unterschied. Ich empfehle Red Gate Ants Profiler hoch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top