Journal influence
Bookmark
Next issue
Abstract:
Аннотация:
Authors: () - , Korablin Yu.P. (y.p.k@mail.ru) - Russian State Social University, Moskow, Russia, Ph.D | |
Keywords: design, , programming |
|
Page views: 14757 |
Print version Full issue in PDF (8.40Mb) |
Большинство разработчиков программного обеспечения используют компонентную технологию при разработке приложений, которая является развитием объектно-ориентированной технологии проектирования [1]. Технология объединяет гибкость в выборе необходимых компонент, свойственную разработке приложения собственными силами, с надежностью кода и функциональной полнотой, проверенными многократным использованием, характерным для коммерческих программных продуктов. При компонентном подходе, например в рамках антивирусных разработок, существенным является скорость обработки данных, поэтому скорость создания экземпляров классов сказывается на скорости работы антивирусной системы. Если рассмотреть известную технологию COM (Component Object Model), а вернее, ее техническую реализацию на платформах семейства Microsoft Windows [2,3], проблемы связаны с временными затратами на создание и поиск классов нужного типа. Работа с используемым для хранения метаинформации о модулях и классах системным реестром Windows, как известно, занимает немалую часть процессорного времени. Кроме того, нельзя явно указать модуль реализации класса, что избавило бы от временных затрат на его поиск при создании экземпляра. То же относится и к различным реализациям CORBA, где за поиск объектов отвечает уровень ORB [4,5].
Операция выделения памяти достаточно долгая [6], и целесообразно было бы в некоторых случаях для создания экземпляров классов предоставлять извне либо заранее выделенную оптимальным способом память, либо память стека. Последний случай можно широко применять в рекурсивных функциях при разборе составных форматов данных. Такой подход обеспечит работу с разными типами данных, сохранит высокую скорость выполнения и позволит быстро создать нужный экземпляр класса и тут же освободить его, чтобы не занимал лишние ресурсы компьютера. Идея организации собственного управления памятью не нова, но в компонентных технологиях не применяется в силу универсальности последних. Таким образом, возникает идея об обеспечении возможности создания экземпляров классов на сторонней памяти, то есть памяти, предоставляемой извне и не выделяемой самим экземпляром. Недостатком модели COM является то, что в ней не предусмотрены стандартные способы указания сторонней памяти для создания экземпляра, хотя создание специализированных интерфейсов для решения этих задач возможно. Изначально сама концепция COM не предусматривала это. Дело в том, что, когда экземпляр не управляет памятью, на которой он создан, управление должно осуществляться извне, следовательно, теряется простота управления временем жизни экземпляров. В модели CORBA потенциально существует возможность собственного управления памятью для создания экземпляров реализаций объектов (сервантов), но для этого необходимо наличие некоего идентификатора объекта (объектной ссылки), что накладывает дополнительные расходы ресурсов на его поддержку. В [7] разработана компонентная технология, базирующаяся на технологии COM и позволяющая ускорить выполнение и минимизировать использование системных ресурсов при построении программных комплексов с компонентным подходом. В частности, технология включает возможность создания экземпляров классов на сторонней памяти и предусматривает явное указывание модуля реализации при создании компонент. Проведено тестирование скорости создания экземпляров классов, построенных на разработанной компонентной технологии, и сравнительное тестирование скорости создания экземпляров классов по разработанной технологии и технологиям COM и CORBA. В качестве реализации компонентной модели CORBA выбрана реализация компанией omniORB как наиболее доступная и часто используемая. Для каждой компонентной модели был подготовлен класс, являющийся минимально возможной реализацией в ее рамках по объему памяти и функционалу. Тестирование скорости проводилось путем замера времени на создание и уничтожение сначала 1 экземпляра 100 тыс. раз, затем на одновременное создание 500 экземпляров и их уничтожение 200 раз, затем на создание и уничтожение 1 тыс. экземпляров 100 раз и т.д. до создания и уничтожения 20 тыс. экземпляров 5 раз, то есть во всех итерациях общее количество экземпляров почти всегда было 100 тыс. Для анализа поведения при параллельном выполнении тестирование проводилось последовательно сначала на одном потоке, затем на двух и на четырех. Данная методика теста была выбрана для того, чтобы оценить скорость при влиянии распределения памяти при разном количестве одновременно созданных экземпляров. Эта процедура выполнялась 12 раз для последующего усреднения результатов и сглаживания погрешностей, поскольку компьютеры целевого назначения не являются вычислительными системами реального времени. Тестирование проходило под управлением Windows XP Sp2. Первый набор тестов выполнялся на персональном компьютере с процессором AMD Athlon семейства x86, тактовой частотой 1,6 ГГц, объемом внутреннего кэша процессора 512 КБ, оперативной памятью объемом 1 ГБ, жестким диском объемом 200 ГБ ATA100. В таблице 1 приведены полученные в результате тестирования значения времени (в миллисекундах) на одновременное создание экземпляров классов, а также соответствие параметров тестирования условным номерам, на которые ссылаются горизонтальные оси приводимых далее графиков. Таблица 1 Сводная таблица результатов первого набора тестов
Первый тип теста показывает сравнительное время на создание экземпляра и его уничтожение с помощью разработанной компонентной технологии (используются сторонняя память и явное указание модуля реализации) с применением технологий COM и CORBA. Результаты приведены на рисунке 1. Из полученных результатов видно, что разработанный подход к оптимизации создания экземпляров дает значительное преимущество по времени по сравнению с технологиями COM и CORBA, то есть экземпляры класса при использовании разработанной технологии можно создавать более эффективным образом, используя заранее выделенную память или память стека или уже зная модуль реализации. Кроме того, дополнительная эффективность разработанного подхода проявляется и при росте одновременно созданных экземпляров, так как в этом случае увеличивается время выделения памяти в моделях COM и CORBA, что не наблюдается при применении разработанной технологии. Данный показатель важен, так как, например, при разборе составных (контейнерных) данных количество одновременно созданных экземпляров может быть велико и преимущество предложенной технологии существенно скажется на повышении скорости данного процесса. Произведем сравнительный замер времени на создание экземпляра с помощью разработанной компонентной технологии на сторонней и собственной памяти, причем для создания экземпляра используем заранее полученную входную точку класса, чтобы в тесте не учитывалось время на загрузку физического модуля и поиск по идентификатору класса. Тест отражает результаты создания экземпляров класса на собственной и сторонней памяти (рис. 2). Из результатов видно, что создание экземпляров на сторонней памяти происходит гораздо быстрее, нежели с использованием собственной процедуры выделения памяти. На оси X располагается количество одновременно созданных экземпляров, оси Y – время создания. Графики иллюстрируют рост времени создания при росте количества одновременно созданных экземпляров, причем в случае собственного выделения памяти время сильно растет, поскольку, чем больше одновременных выделений памяти, тем больше затраты времени на новое выделение. Время же создания с использованием сторонней памяти практически не меняется с одновременным ростом количества экземпляров. Резкий скачок времени в середине обоих графиков обусловлен тем, что процессор исчерпал внутренний кэш для операций с памятью. В тесте размер каждого экземпляра составлял около 100 байт, количество одновременно созданных экземпляров на момент, предшествующий скачку, составляет 5 тыс. и на момент скачка 10 тыс., то есть соответственно 500 КБ и 1 МБ. Размер внутреннего кэша процессора, на котором производился тест, составлял 512 КБ, этим и объясняется скачок времени. Разница во времени между двумя типами создания постепенно возрастает, следовательно, происходит существенное увеличение производительности при одновременном создании большого числа экземпляров на сторонней памяти, что подтверждает эффективность и производительность примененного подхода при создании большого количества экземпляров. Второй набор тестов производился для анализа скорости параллельного создания экземпляров на многоядерном процессоре. По своему типу тест совпадает с первым тестом по скорости, но в данном случае последовательно создавались экземпляры на одном потоке, затем на двух и на четырех. В таблице 2 приведены полученные результаты. Таблица 2 Сводная таблица результатов второго набора тестов
Тесты выполнялись на компьютере с 2-ядерным процессором Intel Core 2 Duo семейства x64 с частотой 2,13 ГГц, объемом внутреннего кэша процессора 2 МБ, оперативной памятью объемом 2 ГБ, жестким диском объемом 400 ГБ SATA-II. График (рис. 3) показывает: при создании экземпляров с использованием компонентной технологии [7] время создания не зависит от одновременного количества экземпляров. Для технологий COM и CORBA картина схожа с аналогичным первым тестом, при этом лишь пропорционально уменьшилось время в соответствии с увеличением тактовой частоты процессора. Также исчез скачок времени при суммарном объеме используемой экземплярами памяти в 512 КБ, поскольку кэш данного процессора составляет 2 МБ, то есть это еще раз подтверждает природу скачка первого теста. При тестировании на двух потоках (рис. 4) выявилось резкое увеличение скорости создания по сравнению с одним потоком экземпляров классов с использованием COM, то есть для этой технологии положительно сказалось распараллеливание, приведшее к увеличению скорости примерно в 1,7 раза. Результаты использования COM почти совпадают в начале графика с разработанной технологией, однако график продолжает расти с возрастанием количества одновременно создаваемых экземпляров. Для разработанной технологии скорость увеличилась всего в 1,1 раза, но скорость создания экземпляров осталась постоянной. Для технологии CORBA распараллеливание оказалось пагубным – скорость уменьшилась. Предположительно, подобный результат связан с потерей времени на внутренних синхронизациях. При сравнении времени создания экземпляров уже на четырех потоках на 2-ядерном процессоре тест показал почти одинаковые с предыдущим результаты, это свидетельствует о том, что реальное распараллеливание идет на двух ядрах процессора и дальнейшее увеличение количества потоков не играет роли. Список литературы 1. Фаулер М. Рефакторинг: улучшение существующего кода. / Пер. с англ. – СПб: Символ-Плюс, 2005. – 432 с. 2. Деннинг А. ActiveX для профессионалов. – СПб: Питер, 1998. – 624 с. 3. Роджерсон Д. Основы COM. / Пер. с англ. – М.: Русская редакция, 1997. – 376 с. 4. Common Object Request Broker Architecture (CORBA), v 3.0 (http://www.omg.org/docs/formal/02-06-37.pdf). 5. Орлик С. В ожидании CORBA 3.0. 1999 (http://www. osp.ru/text/302/179690). 6. Maurice J. Bach Архитектура операционной системы UNIX. 1996 (http://www.opennet.ru/docs/RUS/unix). 7. Нечаев П.Д. Компонентная модель на основе оптимизации и расширения COM. // Программные продукты и системы. – 2008. – № 1. – С. 37–39. |
Permanent link: http://swsys.ru/index.php?id=1623&lang=en&page=article |
Print version Full issue in PDF (8.40Mb) |
The article was published in issue no. № 4, 2008 |
Perhaps, you might be interested in the following articles of similar topics:
- Аспектно-ориентированное программирование в контексте решения вопросов повышения эффективности экономических показателей IT-проектов
- Автоматизация процесса формирования учетной документации с использованием базы данных радиоэлектронных компонентов
- Самосборка программного обеспечения как паттерн проектирования
- Комплексная разработка программно-аппаратных компонентов фильтра преобразователя частоты для работы в судовых сетях ограниченной мощности
- Выбор языка высокого уровня для реализации вычислительного приложения
Back to the list of articles