Les manipulations de chaînes sont immuables. Il y aura une nouvelle chaîne créée à chaque fois que stmt x + = 2000_char_long_string; est exécuté. Par conséquent, comme suggéré par Kobi, vous devez utiliser une classe StringBuilder.
Toutefois, dans votre cas, vous devez spécifier la capacité dans le constructeur StringBuilder.
En effet, si non spécifié, la capacité par défaut de StringBuilder lors de la création est 16.
Une fois que cette capacité est épuisée, il va créer un nouvel emplacement de mémoire contiguë, copier tout le contenu du StringBuilder au nouvel emplacement et pointez l'instance vers le nouvel emplacement. Puisque vous connaissez déjà la taille approximative de la chaîne finale (peut-être 7000 * 2000), vous pouvez spécifier la capacité en conséquence. Pour plus de détails, veuillez consulter ma réponse au StringBuilder and capacity?.
Dans votre cas, il serait utile de spécifier la capacité au cours de l'initialisation de StringBuilder pour que votre code soit plus rapide et évite le surcoût dû à la réallocation de la mémoire dans StringBuilder. S'il vous plaît vérifier ma réponse ci-dessous. –
StringBuilder déplace la boîte de peinture! http://www.joelonsoftware.com/articles/fog0000000319.html –