Статус: Реализовано: UI.VCAEngine, UI.Vision, UI.WebVision
Автор: Роман Савоченко
Примечание: Проект, на начальном этапе, формировался на основе дипломного проекта Зайчука Евгения? и в последствии был полностью переписан с переходом на Qt4, формализацией и с созданием данной концепции.
В процессе реализации неоднократно принимались меры по оптимизации, направленные на повышений производительности различных узлов СВУ и взаимодействия между ними. В данном разделе размещаются отчёты, соображения и планы таких мер.
23.08.2007
Основание: Наиболее ответственным, в вопросе производительности, является взаимодействие между моделью данный СВУ и визуализаторами, а также циклы обслуживания интерактивного взаимодействия и обновления. Данный вопрос приобретает ещё большее значение в свете того, что для взаимодействия визуализаторов с моделью данных СВУ используются слабые связи, а именно события основанные на XML-запросах, которые потенциально медленнее прямых связей. Однако возможность последующего перенаправления потока данных взаимодействия на сетевые транспортные протоколы, а также более высокая надёжность такого взаимодействия оправдывают усилия по оптимизации этого взаимодействия.
Условия: Основными объектами оптимизации являются: цикл обновления визуализатора "Vision" и цикл обсчёта сеанса на стороне модели данных СВУ. Замер временных интервалов выполнялся на вычислительной машине Athlon 64 3000+, с пониженной до 800МГц частотой процессора и тестовой странице.
Процесс | Исходное время (мс) | Результирующее время (мс) | Комментарии |
Цикл обновления визуализатора "Vision" | |||
Полный секундный цикл обновления | 43 | 10 | |
Обработка списка открытых окон | 2.3 | 2.2 | Незначительное улучшение за счёт выделение функции запроса перечня открытых окон в сервисные функции быстрого доступа. |
Обновление открытых страниц | 41 | 9 | |
Запрос атрибутов | 24 | 7 | Значительно сократилось за счёт введения общего счетчика модификации виджета и вынос запроса на обновления списка не пользовательских атрибутов в цикл обсчёта сеанса. |
Вызов функции setAttr(), для полученных атрибутов | 19 | 2 | Значительно сократилось за счёт пересмотра и доработки примитива "ElText". |
Цикл обсчета сеанса пользовательского интерфейса модели данных СВУ. | |||
Полный цикл вычисления | 53 | 21 | Значительно сократилось, за счёт пересмотра последовательности вычисления виджета и уменьшения периодичности обновления списка: слинкованых атрибутов и активных дочерних виджетов. |
11.07.2008
Основание: Для оценки потенциальных возможностей по производительности среды визуализации, а также с целью повышения производительности и возможности создания мнемосхем с большим количеством виджетов была проведена оптимизация визуализации виджетов, как в режиме разработки, так и в режиме исполнения.
Условия: Замер временных интервалов выполнялся на вычислительной машине Pentium 4 3200.
Процесс | Исходное время (мс) | Результирующее время (мс) | Комментарии |
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 |