powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Тормоза FMX сравнению с VCL
9 сообщений из 9, страница 1 из 1
Тормоза FMX сравнению с VCL
    #40071875
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VCL выполняется за ~180 мс, а в FMX ~2000мс !!!в десять раз!!!

Можно это как-то побороть или пока оно такое..?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
var
  i: Integer;
  tm1: TTime;
begin
  tm1 := now;
  for i := 0 to 500 do cbb1.Items.Add('ljkhflkjshafljkhaldjkh ' + i.ToString);
  ShowMessage(IntToStr(i) + ' за ' +IntToStr(MilliSecondsBetween(now,tm1)));
...
Рейтинг: 0 / 0
Тормоза FMX сравнению с VCL
    #40071878
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У списка есть методы блокировки типа BeginUpdate
...
Рейтинг: 0 / 0
Тормоза FMX сравнению с VCL
    #40071881
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
У списка есть методы блокировки типа BeginUpdate


Блин у TGrid использую, думал, здесь такого нет :) Спасибо, заработало оч быстро
...
Рейтинг: 0 / 0
Тормоза FMX сравнению с VCL
    #40071889
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема не решена, она даже усугубилась :)

с TComboBox работает BeginUpdate

Но необходимо работать TComboEdit, у которого BeginUpdate тоже имеется, но вообще не помогает, 500 записей за 7000+мс

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
  i: Integer;
  tm1: TTime;
begin
  tm1 := now;
  edt1.BeginUpdate;
  for i := 0 to 500 do edt1.Items.Add('ljkhflkjshafljkhaldjkh ' + i.ToString);
  edt1.EndUpdate;
  ShowMessage(IntToStr(i) + ' за ' +IntToStr(MilliSecondsBetween(now,tm1)));
...
Рейтинг: 0 / 0
Тормоза FMX сравнению с VCL
    #40071890
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для реального ускорения можно писать ч-з AddStrings

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var
  i: Integer;
  tm1: TTime;
  arr: TArray<string>;
begin
  tm1 := now;
  edt1.BeginUpdate;
  for i := 0 to 500 do arr[i] := 'ljkhflkjshafljkhaldjkh ' + i.ToString;
  edt1.Items.AddStrings(arr);
  edt1.EndUpdate;
  ShowMessage(IntToStr(i) + ' за ' +IntToStr(MilliSecondsBetween(now,tm1)));



Так работает быстро, а ч-з edt1.Items.Add или edt1.Items.Append ужасно медленно, видимо BeginUpdate /EndUpdate не срабатывает для TComboEdit
...
Рейтинг: 0 / 0
Тормоза FMX сравнению с VCL
    #40071895
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

через Assign пробовали? Подготавливали какой-то стринглист, а потом edt1.Items.Assign(стринглист). Или в FMX такого нет?
...
Рейтинг: 0 / 0
Тормоза FMX сравнению с VCL
    #40071906
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
Код: pascal
1.
edt1.BeginUpdate;


wadman
У списка есть методы блокировки типа BeginUpdate

Я писал про список, а не про контрол.
...
Рейтинг: 0 / 0
Тормоза FMX сравнению с VCL
    #40071912
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо еще понятнее :)

edt1.Items.beginUpdate
...
Рейтинг: 0 / 0
Тормоза FMX сравнению с VCL
    #40071925
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди
надо еще понятнее :)

edt1.Items.beginUpdate


Ну теперь-то понятненько :)

А у TCombobox и cbb1.BeginUpdate такой-же результат (15мс), поэтому и применил тоже к контролу, а оно оказывается к списку надо. Спасибо
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Тормоза FMX сравнению с VCL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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