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

но я кстати проверил.
строка с разделителями точно быстрее, чем проход в цикле по датасету.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #478767
s62
Скрыть профиль Поместить в игнор-лист
s62 
Участник
Неуловимый Джо  12.07.2023, 10:44
[игнорируется]
но я кстати проверил.
строка с разделителями точно быстрее, чем проход в цикле по датасету.
Наверное ты и сам знаешь, на всякий случай напишу. Если визуальный компонент, то при добавлении по одной записи он будет перерисовываться после каждого добавления и это добавляет тормозов. Чтобы этого не было надо вначале вызвать StringList.BeginUpdate, а когда все изменения будут внесены, вызвать StringList.EndUpdate. Можно через try ... finally на случай исключения. Это реально ускоряет в случае добавления большого количества строк поочередно.
...
Рейтинг: 1 / 0
Нравится: Неуловимый Джо
Языки программирования семейства Pascal / Как будет быстрее?
    #478792
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
s62  12.07.2023, 11:07
[игнорируется]
Неуловимый Джо  12.07.2023, 10:44
[игнорируется]
но я кстати проверил.
строка с разделителями точно быстрее, чем проход в цикле по датасету.
Наверное ты и сам знаешь, на всякий случай напишу. Если визуальный компонент, то при добавлении по одной записи он будет перерисовываться после каждого добавления и это добавляет тормозов. Чтобы этого не было надо вначале вызвать StringList.BeginUpdate, а когда все изменения будут внесены, вызвать StringList.EndUpdate. Можно через try ... finally на случай исключения. Это реально ускоряет в случае добавления большого количества строк поочередно.
ну тут остается надеяться что в компоненте это учтено.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Как будет быстрее?
    #478809
s62
Скрыть профиль Поместить в игнор-лист
s62 
Участник
Неуловимый Джо  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;
...
Изменено: 12.07.2023, 11:45 - s62
Рейтинг: 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 / Как будет быстрее?
    #479003
s62
Скрыть профиль Поместить в игнор-лист
s62 
Участник
Неуловимый Джо [игнорируется] 

Можно присвоить свойство 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;
...
Изменено: 12.07.2023, 14:26 - s62
Рейтинг: 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
8 сообщений из 8, страница 1 из 1
Форумы / Поиск: Искать ответы на сообщение: #478732  
Пользователи онлайн (25): Анонимы (11), XEugene, sergey11, Просто Трёп, Брюквенные годы, С чистого листа, паразит, Bing Bot 1 мин., Tabula Rasa 1 мин., kkk-jjj 1 мин., Yandex Bot 1 мин., anonymous 2 мин., s62 4 мин., Сталкер 5 мин., Arn 8 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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