Книга: Основы программирования в Linux
Оптимизация обновлений экрана
Оптимизация обновлений экрана
Как вы видели в примере из упражнения 6.4, обновление множественных окон требует некоторой ловкости, но не слишком обременительно. Но может возникнуть более серьезная проблема, если нуждающийся в обновлении терминал подключен через медленное сетевое соединение. К счастью, в наши дни с ней сталкиваются очень редко, но ее обработка настолько легка, что мы рассмотрим ее просто для полноты картины.
Задача состоит в минимизации количества символов, прорисовываемых на экране, поскольку при наличии медленных линий связи рисование на экране может оказаться утомительно долгим. Библиотека curses предлагает специальный метод обновления экрана с помощью пары функций wnoutrefresh
и doupdate
:
#include <curses.h>
int wnoutrefresh(WINDOW *window_ptr);
int doupdate(void);
Функция wnoutrefresh
определяет, какие символы необходимо отправить на экран, но не отправляет их на самом деле. Функция doupdate
действительно отправляет изменения на терминал. Если вы просто вызовите wnoutrefresh
, а за ней тут же функцию doupdate
, эффект будет такой же, как при вызове функции wrefresh
. Однако если вы хотите перерисовать ряд окон, то можете вызвать функцию wnoutrefresh
для каждого окна (конечно, в нужном порядке) и затем вызвать doupdate
только после последнего вызова wnoutrefresh
. Это позволит библиотеке curses выполнить расчеты, связанные с обновлением экрана, по очереди для каждого окна и только после этого вывести обновленный экран. Такой подход почти всегда позволяет curses минимизировать количество символов, нуждающихся в пересылке.
- Оптимизация сетевого трафика
- Часть III Установка, настройка и оптимизация операционной системы
- Глава 9 Тонкая настройка и оптимизация
- Параметры экрана
- 4.13.2. Обход сетевого экрана
- Создание копий экрана
- Практическая работа 6. Создание рисунков с использованием копий экрана
- Оптимизация QueryInterface
- Глава 4 Снимок экрана
- Оптимизация работы InterBase
- Оптимизация маркетинговой деятельности
- Как настроить яркость экрана нетбука?