![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TMemo медленно работает [D7, WinXP]
Mr. D. © (2007-03-02 23:10:00)Программа ведет некие сетевые логи, информации не так уж и много, но TMemo тем не менее ужасно тормозит. Информация в TMemo добавляется строками (Lines.add). И чем больше строк в TMemo, тем визуальнее она все больше тормозит.
Что можно тут поделать?
Германн (2007-03-05 02:58:00) [1]
> Mr. D. (03.03.07 15:04) [13]
>
> Вы о чем, господа! Да она сразу начинает тормозить, если
> строки быстро добавлять относительно. Причем, визуально
> кажется, что все время на скрол тратится, то есть добавляется
> строчка, а потом относительно медленно идет прокрутка к
> концу TMemo, может из-за этих эффектов красивой прокрутки
> все и тормозит - фиг знает.
>
> Но как-то хочется ускорить.
>
Лично я - о полном бреде использования TMemo и любых других визуальныхкомпонент в подобном случае.
zap8 (2007-03-05 01:44:00) [2]1.Писать в файл
2.Читать в виртуальный ListView, отображать только те строки которые "вмещаются" в канвас ListView при прокрутке
GrayFace (2007-03-04 17:51:00) [3]Sam Stone © (04.03.07 11:49) [15]
это чтобы кучу строк дополнительно сдвигать?)
На уровне VCL без разницы, куда вставлять.
Может использовать TListBox? Еще есть TSynEdit - возможно он подойдет.
P.S.
Mr. D. (03.03.07 2:13) [8]
Круто, конечно, но я не верю, что нельзя побороть тормознутость TMemo.
Зря не веришь, Memo - очень кривая штука (точнее не Memo, а Multiline Edit, т.к. кривость именно в WinAPI). Чтобы добавить парочку бызовых для нормальных редакторов вещей, мне пришлось так извращаться...
DrPass (2007-03-04 15:15:00) [4]
> Да она сразу начинает тормозить, если строки быстро добавлять
> относительно
Ну, вообще-то да - при добавлении новой строчки выполняется полная перерисовка всего содержимого. Для того и придуманы Memo.Lines.BeginUpdate/EndUpdate
Sam Stone (2007-03-04 11:49:00) [5]
> а ты добавляй не в конец, а сверху
это чтобы кучу строк дополнительно сдвигать?)
Правильный Вася (2007-03-03 15:26:00) [6]а ты добавляй не в конец, а сверху
Mr. D. (2007-03-03 15:04:00) [7]Вы о чем, господа! Да она сразу начинает тормозить, если строки быстро добавлять относительно. Причем, визуально кажется, что все время на скрол тратится, то есть добавляется строчка, а потом относительно медленно идет прокрутка к концу TMemo, может из-за этих эффектов красивой прокрутки все и тормозит - фиг знает.
Но как-то хочется ускорить.
Правильный Вася (2007-03-03 11:40:00) [8]что-то мне припоминается у мемо были ограничения на 64 кб
Belorus (2007-03-03 10:46:00) [9]Миллионы не нужны. После того как там есть уже тысяч 100, добавление работает ужасно.
Anatoly Podgoretsky (2007-03-03 07:54:00) [10]> Mr. D. (02.03.2007 23:10:00) [0]
А сколько миллионов строк в мемо?
Германн (2007-03-03 02:23:00) [11]
> Mr. D. (03.03.07 02:13) [8]
>
> Круто, конечно, но я не верю, что нельзя побороть тормознутость
> TMemo.
>
Ну нет у TMemo другой тормознутости, кроме "визуализации многих тысяч строк"! А она, имхо, не поборима. Может тормоза где-то в другом месте твоей программы?
Mr. D. (2007-03-03 02:13:00) [12]Круто, конечно, но я не верю, что нельзя побороть тормознутость TMemo.
Германн (2007-03-03 01:42:00) [13]
> YurikGL © (03.03.07 01:29) [6]
>
>
> > Это, имхо, перебор. А Бритва Оккама у меня всегда при
> себе.
> > :)
>
> Каждому свое.... кто-то на файликах останавливатся, а кто-
> то сразу общее решение делает... :P
>
> з.ы. кстати, использование БД ИМХО, наиболее простой в реализации
> и логичный способ хранения логов...
>
Не буду спорить на таком уровне. Тут ты прав. И многие так и делают. Но на уровне сабжа это всё-таки перебор.
YurikGL (2007-03-03 01:29:00) [14]
> Это, имхо, перебор. А Бритва Оккама у меня всегда при себе.
> :)
Каждому свое.... кто-то на файликах останавливатся, а кто-то сразу общее решение делает... :P
з.ы. кстати, использование БД ИМХО, наиболее простой в реализации и логичный способ хранения логов...
Германн (2007-03-03 01:22:00) [15]
> YurikGL © (03.03.07 01:02) [4]
>
>
> > Германн © (03.03.07 00:59) [3]
>
> Тогда уж можно и mySQL поставить и в него писАть...
>
Это, имхо, перебор. А Бритва Оккама у меня всегда при себе. :)
YurikGL (2007-03-03 01:02:00) [16]
> Германн © (03.03.07 00:59) [3]
Тогда уж можно и mySQL поставить и в него писАть...
Германн (2007-03-03 00:59:00) [17]
> YurikGL © (03.03.07 00:33) [2]
>
> Если визуально отображать не надо, можно использовать TStringList.
> .. Из него можно уже и в файл писать.
>
Лучше уж писАть в файл, а при необходимости просмотра из программы, загружать из файла. А то программа слетит и всё что накопилось в Стринглисте, как в прочем и в Мемо, пойдёт псу под хвост.
YurikGL (2007-03-03 00:33:00) [18]Если визуально отображать не надо, можно использовать TStringList... Из него можно уже и в файл писать.
Плохиш (2007-03-02 23:16:00) [19]
> Что можно тут поделать?
Пиши лог в файл...