У нас есть приложение, которое имеет одно или несколько окон текстовой консоли, которые по существу представляют последовательные порты (ввод и вывод текста, символ за символом). Эти окна превратились в серьезную проблему с производительностью в том виде, в котором они в настоящее время кодируются ... нам удается потратить на них очень значительную часть времени.
Текущий код структурирован так, что окно живет своей маленькой жизнью, а основной поток приложения ведет его через вызовы SendMessage (). Эта передача сообщений, кажется, является причиной невероятных накладных расходов. По сути, обход по ОС кажется неправильным.
Обратите внимание, что мы рисуем текстовые линии в целом, где это уместно, так что простая оптимизация уже выполнена.
Я не эксперт в кодировании Windows, поэтому мне нужно спросить сообщество, есть ли какая-то другая архитектура для управления отображением текста в окне, кроме отправки таких сообщений? Кажется, довольно тяжеловес.
Обратите внимание, что это на C ++ или обычном C, поскольку основным приложением является переносимая программа на C / C ++ / некоторых других языках, которая также работает на Linux и Solaris.
Мы провели еще несколько расследований, похоже, половина служебных данных готовит и отправляет каждое сообщение с помощью SendMessage, а другая половина - это фактический чертеж экрана. SendMessage выполняется между функциями в одном файле ...
Так что я думаю, что все советы, приведенные ниже, верны:
- Посмотрите, сколько всего перерисовано
- Рисуй вещи прямо
- Операции рисования фрагментов во времени, чтобы не отправлять каждый символ на экран, с целью увеличения частоты обновления последовательной консоли от 10 до 20 Гц.
Можете ли вы принять ВСЕ ответы?