Гость
Форумы / Microsoft .NET [закрыт для гостей] / C#, конкатенация строк / 11 сообщений из 11, страница 1 из 1
03.08.2022, 17:37
    #106821
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
Делаю в цикле
Код: C#
1.
s = s + t + ",";
несколько тысяч раз, получается очень долго. Он что, каждый раз память выделяет? Как это можно ускорить?
...
Рейтинг: 0 / 0
03.08.2022, 17:38
    #106823
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
Просто Трёп  03.08.2022, 17:37
[игнорируется]
Делаю в цикле
Код: C#
1.
s = s + t + ",";
несколько тысяч раз, получается очень долго. Он что, каждый раз память выделяет? Как это можно ускорить?
У C# фиксированные строки, он каждый раз их по новой создаёт.
По моему, надо StringBuilder использовать.
...
Изменено: 03.08.2022, 17:38 - IT-Христ
Рейтинг: 0 / 0
03.08.2022, 17:40
    #106826
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
String это фиксированная строка, которая не меняет размер. При добавлениях получается огромное количество этих временных строк.
StringBuilder это тип строки, которая может изменять размер. Все операции идут с одним объектом.
...
Рейтинг: 2 / 0
03.08.2022, 17:46
    #106840
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
IT-Христ  03.08.2022, 17:40
[игнорируется]
String это фиксированная строка, которая не меняет размер. При добавлениях получается огромное количество этих временных строк.
StringBuilder это тип строки, которая может изменять размер. Все операции идут с одним объектом.
сенькс.
...
Рейтинг: 0 / 0
03.08.2022, 17:51
    #106848
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
Спасибо, реально все залетало.
...
Рейтинг: 1 / 0
Нравится: Гарыныч
03.08.2022, 19:14
    #106884
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
Можно массив чаров заполнить и создать строку прям из него.
Без стрингбилдера.
...
Рейтинг: 0 / 0
03.08.2022, 19:52
    #106896
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
eNose  03.08.2022, 19:14
[игнорируется]
Можно массив чаров заполнить и создать строку прям из него.
Без стрингбилдера.
Так я ж конечного размера не знаю. Или динамический массив? Думаешь, будет быстрее?
...
Рейтинг: 0 / 0
03.08.2022, 21:22
    #106925
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
Просто Трёп  03.08.2022, 19:52
[игнорируется]
eNose  03.08.2022, 19:14
[игнорируется]
Можно массив чаров заполнить и создать строку прям из него.
Без стрингбилдера.
Так я ж конечного размера не знаю. Или динамический массив? Думаешь, будет быстрее?
Выделяй блоками по тысячи. Лишние удалишь в конце.

Насчет быстрее хз.
...
Рейтинг: 0 / 0
13.08.2022, 11:12
    #115406
cat2
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
C#, конкатенация строк
А зачем вообще внутри цикла создавать строки?
eNose  03.08.2022, 21:22
[игнорируется]
Просто Трёп  03.08.2022, 19:52
[игнорируется]
eNose  03.08.2022, 19:14
[игнорируется]
Можно массив чаров заполнить и создать строку прям из него.
Без стрингбилдера.
Так я ж конечного размера не знаю. Или динамический массив? Думаешь, будет быстрее?
Выделяй блоками по тысячи. Лишние удалишь в конце.

Насчет быстрее хз.
Чесание правого уха левой рукой.
Стрингбилдер так и работает - выделяет память

https://docs.microsoft.com/ru-ru/dotnet/api/system.text.stringbuilder?view=net-6.0#HowWorks
...
Рейтинг: 0 / 0
13.08.2022, 11:33
    #115415
cat2
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
C#, конкатенация строк
Я так понимаю, что в итоге получается что-то вроде 1,2,3,4,5,6,7,8,

Тогда надо так.

Перед циклом
Код: C#
1.
List<object> myString = new List<object>();
Внутри цикала
Код: C#
1.
myString.Add(t);
После цикла
Код: C#
1.
         string  s = String.Join(",", myString);
...
Рейтинг: 0 / 0
25.08.2022, 17:19
    #125830
Администратор
Администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#, конкатенация строк
Тема была перенесена из форума 'Общие вопросы по IT'.
...
Администратор:
Тема была перенесена из форума 'Общие вопросы по IT'.
Рейтинг: 0 / 0
Форумы / Microsoft .NET [закрыт для гостей] / C#, конкатенация строк / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]