Verwenden Sie einen StringBuilder .
%Vor% Wenn Sie +=
für Zeichenfolgen verwenden, erstellen Sie weiterhin neue Zeichenfolgen und suchen nach immer größeren Speicherblöcken. Deshalb ist die Operation so langsam.
Verwenden Sie StringBuilder
als @ Kobi referenziert Sie können die Leistung noch steigern, indem Sie sie initialisieren. Es scheint, dass Sie die endgültige Größe von string
im Voraus bestimmen können.
String-Manipulationen sind unveränderlich. Es wird eine neue Zeichenkette jedes Mal erstellt werden, die stmt x + = 2000_char_long_string; wird ausgeführt. Daher sollten Sie, wie von Kobi vorgeschlagen, eine StringBuilder-Klasse verwenden.
In Ihrem Fall sollten Sie jedoch die Kapazität im StringBuilder-Konstruktor angeben.
Dies liegt daran, dass die Standardkapazität von StringBuilder bei der Erstellung 16 ist, wenn sie nicht angegeben wird.
Sobald diese Kapazität erschöpft ist, wird ein neuer zusammenhängender Speicherort erstellt, der gesamte Inhalt des StringBuilders an den neuen Speicherort kopiert und die Instanz auf den neuen Speicherort ausgerichtet. Da Ihnen die ungefähre Größe der letzten Zeichenfolge bereits bekannt ist (vielleicht 7000 * 2000), können Sie die Kapazität entsprechend angeben.
Bitte lesen Sie meine Antwort zu StringBuilder und Kapazität? für weitere Details.
Tags und Links string c# performance assignment-operator