Цветные текстовые компоненты Delphi заменяют TRichEdit для улучшения производительности

В настоящее время я использую TRichEdit в качестве средства просмотра журнала событий "в реальном времени" в одном из своих программ (в Delphi 7), и недавно я профилировал свое ПО, и TRichEdit потребляет более 40% времени процессора.

Я просто хочу протестировать другие компоненты, чтобы сравнить производительность, этот компонент должен иметь:

  • Раскраска строк (это может быть цвет синтаксиса LINE, поскольку линии разных цветов имеют разные префиксы или HTML-раскраски и т. Д.).
  • Функция Easy Save to file (в формате RTF или HTML).
  • Бесплатный или открытый исходный код.
  • Хороший перф. даже для "больших файлов" (может быть 200 Мо) в качестве зрителя.

Инфо: я еще смотрю этот пост, но без хорошего ответа для меня.

3 ответа

Решение

Проверьте TConsole / TColorConsole около 1996: http://www.torry.net/authorsmore.php?id=604

Он не делает HTML, он не делает RTF, но он делает прокрутку цветного текста довольно чертовски быстро.;>

Для просмотра событий в реальном времени я бы рекомендовал использовать VirtualTreeView. Он способен обрабатывать практически неограниченное количество строк, имеет огромное количество функций настройки (таких как настраиваемая раскраска и произвольное рисование чего угодно и все), поддерживает юникод и работает очень быстро даже с несколькими миллионами элементов в списке. Требуется некоторое время, чтобы понять, как все работает, но как только вы поймете это, вы никогда не будете оглядываться назад. Он даже поддерживает редактирование на месте (включая поддержку пользовательских элементов управления для каждого столбца). Каждый элемент - это запись, которая может содержать любые данные, которые вам нужны (а не только данные, которые вы хотите отобразить). Также поддерживается пошаговый поиск, а также чрезвычайно быстрый поиск по коду, даже если у вас есть миллионы элементов.

Я бы не стал использовать какие-либо "стандартные" компоненты для редактирования текста из-за множества ограничений, налагаемых либо ОС, либо самим компонентом. Единственный известный мне компонент, который может поддерживать большинство (если не все) ваших требований, уже упоминался - TRichView. я пробовал TSynEdit и я могу сказать, что он имеет много функций, но серьезно не хватает производительности.

Попробуйте VirtualTreeView, и вы не пожалеете об этом.

Может быть, вы можете войти в клиентский набор данных. DBGrid позволяет указывать все виды параметров рисования, поэтому вы можете указать цвет фона на основе видимых линий. ClientDataset может легко управлять довольно большим количеством данных, и сетка будет рисовать только те строки, которые видны.

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

Другие вопросы по тегам