|
Вопрос # 3 357/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Для ведения logа программы на этапе отладки использую Memo.
Вывожу туда информацию для себя. Но как выяснилось, когда выводишь много данных, это занимает приличное время и прога "тормозит". Какие можно использовать более быстрые приемы для этих целей?
Заранее спасибо!
 |
Вопрос задал: Muratov Radik (статус: Посетитель)
Вопрос отправлен: 3 ноября 2009, 13:16
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Muratov Radik!
вся проблема тормозов в том, что сложно добавить новую строку. по этой причине и тормозит. Ведь при добавлении новой строки, происходит выделение памяти под старый список строк плюс новую, всё копируются туда и старая память удаляется. понятно, что когда кол-во строк большое, это будет происходить очень долго. Конечно, алгоритм выделения памяти намного оптимальнее - память выделяется на перед не для одной строки, а под 16 (если память не изменяет).
Как решить данную проблему.
- не выводить все строки, а выводить последние 50-100. то есть при добавлении проверять, сколько строк уже есть, если их больше определённого числа, верхние удаляем.
- держать строки в памяти (в TStringList), а на экран выводить пачками. (тормозит в основном графическая часть Memo). Но теряется основная идея логов.
- более правильный вариант - выводить логи в файл. почему так лучше? а если программа зависнет, их можно будет почитать! плюс, можно написать некий парсер логов, который будет просматривать их и искать там. Почитайте мою статью О костылях - найдете всё что нужно.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 3 ноября 2009, 13:30
Оценка за ответ: 5
Комментарий к оценке: КАк всегда исчерпывающий ответ
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 3 ноября 2009, 14:00; участников в обсуждении: 1.
|
Muratov Radik (статус: Посетитель), 3 ноября 2009, 13:42 [#1]:
И еще вопрос: а как в Дельфи сделать что-то типа #define DEBUG и потом проверять. И в зависимости от Debug или нет, соответственно вести лог или нет?
|
|
Muratov Radik (статус: Посетитель), 3 ноября 2009, 14:00 [#2]:
Нашел, надо было только статью до конца дочитать
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|