Статус: Реализация
Автор: /RomanSavochenko
Примечание: Проект, на начальном этапе, формировался на основе дипломного проекта Зайчука Евгения.
В процессе реализации неоднократно принимались меры по оптимизации направленной на повышений производительности различных узлов СВУ и взаимодействия между ними. В данном разделе размещаются отчёты, соображения и планы таких мер.
Наиболее ответственным, в вопросе производительности, является взаимодействие между моделью данный СВУ и визуализаторами, а также циклы обслуживания интерактивного взаимодействия и обновления. Данный вопрос приобретает ещё большее значений в свете того, что для взаимодействия визуализаторов с моделью данных СВУ используются слабые связи, а именно события основанный на XML-запросах, которые потенциально медленнее прямых связей. Однако возможность последующего перенаправления потока данных взаимодействия на сетевые транспортные протоколы, а также более высокая надёжность такого взаимодействия оправдывают усилия по оптимизации этого взаимодействия.
Основными объектами оптимизации являются: цикл обновления визуализатора "Vision" и цикл обсчёта сеанса на стороне модели данных СВУ. Замер временных интервалов выполнялся на вычислительной машине Athlon 64 3000+, с пониженной до 800МГц частотой процессора и тестовой странице. Результаты выполненной оптимизации сведены в таблицу 7.1
Таблица 7.1 Результирующие данные и комментарии оптимизации взаимодействия между моделью данный СВУ и визуализаторами
Процесс | Исходное время (мс) | Результирующее время (мс) | Коментарии |
Цикл обновления визуализатора "Vision" | |||
Полный секундный цикл обновления | 43 | 10 | |
Обработка списка открытых окон | 2.3 | 2.2 | Незначительное улучшение за счёт выделение функции запроса перечня открытых окон в сервисные функции быстрого доступа. |
Обновление открытых страниц | 41 | 9 | |
Запрос атрибутов | 24 | 7 | Значительно сократилось за счёт введения общего счетчика модификации виджета и вынос запроса на обновления списка не пользовательских атрибутов в цикл обсчёта сеанса. |
Вызов функции setAttr(), для полученных атрибутов | 19 | 2 | Значительно сократилось за счёт пересмотра и доработки примитива "ElText". |
Цикл обсчета сеанса пользовательского интерфейса модели данных СВУ. | |||
Полный цикл вычисления | 53 | 21 | Значительно сократилось, за счёт пересмотра последовательности вычисления виджета и уменьшения периодичности обновления списка: слинкованых атрибутов и активных дочерних виджетов. |
Для оценки потенциальных возможностей по производительности среды визуализации, а также с целью повышения производительности и возможности создания мнемосхем с большим количеством виджетов была проведена оптимизация визуализации виджетов, как в режиме разработки, так и в режиме исполнения.
Замер временных интервалов выполнялся на вычислительной машине Pentium 4 3200. Результаты выполненной оптимизации сведены в таблицу 7.2
Таблица 7.2 Результирующие данные и комментарии оптимизации визуализации виджетов
Процесс | Исходное время (мс) | Результирующее время (мс) | Коментарии |
160 эллиптических дуг по одной в каждом виджете с радиусами по 20 пискселов и толщиной линии, равной 1 | Загрузка:497; Инициализация, отрисовка: 355 | Загрузка:333; Инициализация, отрисовка: 273 | |
160 эллиптических дуг по одной в каждом виджете с радиусами по 20 пискселов и толщиной линии, равной 1 с заливкой в каждой | Загрузка:492; Инициализация, отрисовка: 1379 | Загрузка:326; Инициализация, отрисовка: 470 | |
160 эллиптических дуг по одной в каждом виджете с радиусами по 20 пискселов и толщиной линии, равной 1 с заливкой в каждой и с масштабом страницы, на которой лежат эти 160 виджетов, равным 0.5 по X и по Y | Загрузка:495; Инициализация, отрисовка: 1430 | Загрузка:334; Инициализация, отрисовка: 452 | Как видно, присутствие масштабных коэффиуиентов, не равных 1, существенно не влияет ни на загрузку, ни на инициализацию и отрисовку |
160 линий по одной в каждом виджете, длиной 40 и тощиной 10 пикселов | Загрузка:451; Инициализация, отрисовка: 70 | Загрузка:315; Инициализация, отрисовка: 5 | |
160 прямоугольников по одном в каждом виджете, длиной 40, шириной 10 и толщиной линии 1 пиксел с заливкой в каждом | Загрузка:486; Инициализация, отрисовка: 175 | Загрузка:336; Инициализация, отрисовка: 38 | |
240 линий по 20 в каждом виджете(всего 12 виджетов), толщной 10 и длиной, приблизительно равной 50 пикселов | Загрузка:58; Инициализация, отрисовка: 53 | Загрузка:30; Инициализация, отрисовка:8 | Время и до и после оптимизации значительно меньше в сравнении с одной линией в одном виджете(всего 160 линий) за счёт уменьшения количества виджетов |
240 четырехугольников с заливкой, шириной примерно 15 и длиной примерно 50 пикселов и с толщиной линии в 1 пиксел по 20 в каждом виджете(всего 12 виджетов) | Загрузка:95; Инициализация, отрисовка:272 | Загрузка:42; Инициализация, отрисовка:93 |