Перейти к содержанию
Fire Monkey от А до Я
  • 0

TMemo, проблемы производительности


mpro

Вопрос

Доброе время суток, уважаемые коллеги!

 

Столкнулся с неприятной проблемой при работе с TMemo, а именно - катастрофическа падение производительности при работе с компонентом TMemo.

Баг отлично наблюдается при длине текста ~ 300 строк, платформа - win32, стили без изменений, все события компонента - пустые.

Ососбенно медленно работает выделение текста (Ctrl-A отрабатывает несколько секунд).

Сталкивался ли кто-то с такой проблемой и известно ли её решение?

Возможно для вывода большого количества текста существует более подходящий (может быть сторонний) компонент?

 

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

У меня более 2000 строк, работает как часы. а вот на андроиде такие же проблемы.

 

Спасибо за ответ, он заставил меня заняться эксперементами.

Проблема оказлась ещё интереснее.

Если вставить/набрать текст в мемо - то всё обрабатывается нормально.

Если программа производит запись в то же Memo программно (из другого потока), то возникает парадоксальная ситуация:

с набранным текстом - всё ок. При попытке выделить текст сгенирированный программно программа начинает тормозить.

Сам бы не поверил, если бы не увидел своими глазами.

Ссылка на комментарий
  • 0
  • Модераторы
 При попытке выделить текст сгенирированный программно программа начинает тормозить.

в это время "другой" поток остановлен?

Ссылка на комментарий
  • 0

У меня более 2000 строк, работает как часы. а вот на андроиде такие же проблемы.

 

Спасибо за ответ, он заставил меня заняться эксперементами.

Проблема оказлась ещё интереснее.

Если вставить/набрать текст в мемо - то всё обрабатывается нормально.

Если программа производит запись в то же Memo программно (из другого потока), то возникает парадоксальная ситуация:

с набранным текстом - всё ок. При попытке выделить текст сгенирированный программно программа начинает тормозить.

Сам бы не поверил, если бы не увидел своими глазами.

возможно проблема в том, что данные мемо, хранятся в озу. но это мои предположения. прийду домой, займусь експериментами
Ссылка на комментарий
  • 0

 

 При попытке выделить текст сгенирированный программно программа начинает тормозить.

в это время "другой" поток остановлен?

 

Провёл эксперимент с остановкой потока.

Результат тот же. Часть текста - копируется и прокручивается нормально, часть - нет.

Обмен идёт через Synchronize.

 

Ссылка на комментарий
  • 0

Последовательность действий:

1. запускаем основное приложение.

2. запускаем второй поток.

3. второй поток пишет в мемо

4. второй поток завершает работу с мемо

5. (?) опцинонально второй поток завершает работу

 

эффект наблюадется

 

  MemoLog.Lines.SaveToFile('test.log');
  MemoLog.Lines.LoadFromFile('test.log');

 

эффект пропадает.

 

С пустым мемо - всё ок. Эффект также не наблюдается.

Изменено пользователем mpro
Ссылка на комментарий
  • 0

Ошибку нашёл.

Ошибка оказалась тривиальной.

Ожидаемая семантика поведение несколько отличалась от того, что было на самом деле.

 

При добавлении текста с переносами, текст попадает в FLines как одна строка (FLines.Count = 1).

Это приводит к очень странной работе всего компонента.

Сказать баг это или фича сложно.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...