powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы [новые:7] / Языки программирования семейства Pascal [закрыт для гостей] / Как будет быстрее?, Поиск: Искать сообщения, созданные автором: Неуловимый Джо  
8 сообщений из 8, страница 1 из 1
Языки программирования семейства Pascal / Как будет быстрее?
    #478613
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
В TStringList нужно добавить из датасета примерно 50 тысяч элементов.
Циклом по датасету долго.
Думаю, если в DelimitedText сунуть строку из пятидесяти тысяч элементов разделенных чем-нибудь, это будет быстрее?

Понятно, что надо проверять, но может кто-то уже пробовал?
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #478732
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62  12.07.2023, 10:26
[игнорируется]
Может проход по датасету тормозит
скорее всего именно так.
там правда чуток сложнее, я добавлюя в стринглист самописного компонента, что как он там добавляет элементы я не знаю, это еще добавляет времени.

но я кстати проверил.
строка с разделителями точно быстрее, чем проход в цикле по датасету.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #478737
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62  12.07.2023, 10:26
[игнорируется]
Добавляется именно в StringList или в какое-то Memo или ListBox?
да там у компонента метод, который принимает параметро стринглист, что он там делает с ним внутри не уверен.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #478792
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62  12.07.2023, 11:07
[игнорируется]
Неуловимый Джо  12.07.2023, 10:44
[игнорируется]
но я кстати проверил.
строка с разделителями точно быстрее, чем проход в цикле по датасету.
Наверное ты и сам знаешь, на всякий случай напишу. Если визуальный компонент, то при добавлении по одной записи он будет перерисовываться после каждого добавления и это добавляет тормозов. Чтобы этого не было надо вначале вызвать StringList.BeginUpdate, а когда все изменения будут внесены, вызвать StringList.EndUpdate. Можно через try ... finally на случай исключения. Это реально ускоряет в случае добавления большого количества строк поочередно.
ну тут остается надеяться что в компоненте это учтено.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #478810
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62  12.07.2023, 11:43
[игнорируется]
Неуловимый Джо  12.07.2023, 11:28
[игнорируется]
ну тут остается надеяться что в компоненте это учтено.
Почему? Ты же передаешь в процедуре в какой-то StringList. Вот у него и можно вызвать в начале BeginUpdate, а в конце EndUpdate.
Типа
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure SendArrayToStringList(Arr: array of integer; SL: TStringList);
begin
  SL.BeginUpdate;
  try
    SL.Clear;
    for i := 0 to High(Arr) do
      SL.Add(IntToStr(Arr[i]);
  finally
    SL.EndUpdate;
  end;
end;
да его я тут же и создаю, на нем никаких отрисовок точно нет.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #478968
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62 [игнорируется] 

С DelimitedText тоже проблемы.
там делиметр можно только один символ, и найти подходящий трудно.

Пока не нашел )
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #479103
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62  12.07.2023, 14:16
[игнорируется]
Неуловимый Джо [игнорируется] 

Можно присвоить свойство Text и разделять строки символами CR LF.
Вроде так должно сработать:
Код: Delphi
1.
2.
3.
4.
s := '';
for i := 0 to High(StrArr) do
  s := s + StrArr[i] + #13#10;
StringList.Text := s;
ок, спасибо, проверю )
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #479109
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
не, не подходит, эта последовательность встречается в строках )
ладно, в принципе и хрен с ним.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы [новые:7] / Языки программирования семейства Pascal [закрыт для гостей] / Как будет быстрее?, Поиск: Искать сообщения, созданные автором: Неуловимый Джо  
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (1), Bing Bot 4 мин.
Пользователи онлайн (29): Анонимы (16), Ветер, prostozevs, Брюквенные годы, Дед-Папыхтет, Tabula Rasa, Yandex Bot, Bing Bot 2 мин., zzdima 3 мин., паразит 4 мин., CerebroSQL 5 мин., битый 5 мин., Redd 5 мин., sergey11 7 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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