Ключ к эффективной разработке: архитектура ECS в сравнении

Изучение роли архитектуры программного обеспечения. Исследование архитектуры ECS и ее альтернатив, их преимуществ и недостатков. Рассмотрение создания ECSA и сравнительные испытания его производительности с объектно-ориентированными архитектурами.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 16.12.2024
Размер файла 95,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

КЛЮЧ К ЭФФЕКТИВНОЙ РАЗРАБОТКЕ: АРХИТЕКТУРА ECS В СРАВНЕНИИ

Аскерли М.В.

Аннотация

В работе исследуется архитектура ECS и ее альтернативы, а также их преимущества и недостатки. Так же описывается создание ECSA и проводятся сравнительные испытания его производительности с объектно-ориентированными архитектурами.

Ключевые слова: Юнити, программное обеспечение, процессор, эффективность.

Annotation

Askerli M.V. STUDYING ARCHITECTURE OF ENTITY COMPONENT SYSTEM

The paper explores the ECS architecture and its alternatives, as well as their advantages and disadvantages. It also describes the creation of ECSA and conducts comparative tests of its performance with object-oriented architectures.

Keywords: Entity Component System, ECS, Entity Component System Architecture, ECSA, Game Object Architecture, GOA, Data Oriented Design, Unity.

Основная часть

В мире разработки программного обеспечения архитектура играет ключевую роль, определяя структуру и эффективность приложений. В последние годы архитектура Entity Component System (ECS) привлекла внимание разработчиков своей гибкостью и эффективностью.

Entity Component System Architecture (ECSA [1] является парадигмой и архитектурным шаблоном, ориентированными на данные, которые полезны для кодирования и обработки сущностей и решают множество проблем, обсуждаемых выше, связанных с объектно-ориентированными архитектурами. Шаблон программного обеспечения ECSA имеет три основных особенности:

1. Сущность (Entity). В архитектуре ECS сущности представляют собой всего лишь идентификаторы. Сущности не содержат данных и не реализуют логику. Сущность не является "контейнером". Тип данных сущности зависит от реализации.

2. Компонент (Component). Компоненты служат только для хранения данных и никогда не содержат функций или реализуют какую-либо логику. Компоненты представляют собой просто данные. Компоненты могут быть структурами или скалярными типами данных и хранятся в массивах смежной памяти. Если сущность "имеет" компонент, то идентификатор сущности может быть использован в качестве индекса в массиве компонентов для получения значения компонента, принадлежащего этой сущности. У каждого компонента есть сигнатурное значение, которое может использоваться для запроса по сигнатуре сущности.

3. Система (System). Системы представляют собой функции. Системы не имеют данных или состояния. Они реализуют логику для изменения компонентов, преобразования компонентов, добавления новых компонентов, создания или удаления сущностей. Каждая система имеет уникальную сигнатуру, и системы могут запросить сущности и проверить, соответствует ли сигнатура сущности сигнатуре самой системы.

1. Производительность кэша центрального процессора.

В конце 1980-х годов микропроцессоры все еще производились без кэшпамяти внутри самого микропроцессора. В течение следующих нескольких десятилетий были изобретены кэш-память уровней L1, L2, а затем L3 для решения проблем, вызванных разницей в скорости системной памяти и скорости вычислений микропроцессора. В настоящее время существуют кэш-память уровня L4, и скоро появятся уровень L5. Эти технологии кэш-памяти сокращают разрыв в производительности между скоростью микропроцессора и скоростью системной оперативной памяти и стали неотъемлемой частью микропроцессора [2].

Кэш-память процессора предназначена для хранения данных, которые наиболее вероятно понадобятся в ближайшем будущем программы. Когда эти данные отсутствуют в кэше процессора, они должны быть загружены или получены из памяти, и такое событие называется "промахом кэша" (cache miss). Сache miss являются дорогостоящими событиями и могут занимать сотни тактов процессора [3]. Сache miss требует загрузки данных из гораздо более медленной системной памяти. Программное обеспечение, разработанное с учетом этих проблем, может снизить количество cache-miss, улучшить производительность процессора, что приведет к более быстрому выполнению программы, и в случае мобильных устройств - к снижению энергопотребления. архитектура программный обеспечение объектный

2. Game Object Architecture.

На конференции GDC в 2002 году Скотт Билас [4] описал, как была создана популярная action RPG "Dungeon Siege" и описал архитектуру, основанную на данных, которую мы сейчас называем архитектурой игровых объектов. Это была объектноориентированная архитектура, где основная идея заключалась в наличии одного класса с общими функциями, которыми все игровые сущности могли бы обмениваться, и абстрактного класса интерфейса, называемого компонентом, который мог быть присоединен к игровому объекту с использованием композиции для создания кода, основанного на данных. Эти компоненты могли быть присоединены или удалены во время работы игры и могли быть созданы дизайнерами без участия инженеров с помощью поддерживаемого сценарного языка.

Такой тип архитектуры стал популярным в игровых движках и сейчас можно найти его в основной модели объектов и компонентов в Unity3D [5].

Игровые объекты легко реализуются и обладают гибкостью, но не обладают хорошей производительностью кэша. В свою очередь, ECSA обладает гибкостью и хорошей производительностью кэша, но сложнее в реализации. Для данного исследования требуется гибкость и хорошая производительность кэша, поэтому ECSA является хорошим выбором.

3. Тестирование производительности.

Была проведена тестирование и запись времени кадров для объектноориентированной архитектуры Game Object и архитектуры ECS.

Все тесты были проведены на ПК с операционной системой Windows 10 с использованием следующего аппаратного обеспечения:

-- AMD 5950X CPU

-- GIGABYTE X570 AORUS Master Motherboard

-- Nvidia RTX 2080ti GPU

-- Corsair Vengeance RGB Pro SL 32GB (2x16GB)R4 3600 (PC4-28800) C18 1.35V Optimized for AMD Ryzen - Black (CMH32GX4M2Z3600C18)

-- Samsung 980 PRO SSD 2TB PCIe NVMe Gen 4 Gaming M.2 Internal Solid State Hard Drive

4. Asteroids Benchmark.

В этом тесте был создан набор астероидов, каждому из которых был присвоен случайный размер, поворот и скорость. На каждом кадре их позиции и повороты были смоделированы на ЦПУ, а затем астероиды были отрисованы на экране с использованием графического API OpenGL. Для отрисовки всех астероидов в одном вызове использовалась инстансная отрисовка. Бенчмарк астероидов имеет 3 функции обновления и 4 компонента.

5. Результаты бенчмарка астероидов.

Рисунок 1 показывает построенные кривые, полученные при более чем 50 различных настройках. Каждая точка на кривой создавалась на основе среднего значения из 1000 выборок. Более низкие значения являются лучшими, и график показывает, что с течением времени кривая объектов игры имеет более крутой наклон и отдаляется от кривой ECSA, что указывает на то, что ECSA масштабируется лучше для более высокого количества сущностей, как и ожидалось. Время кадра указано в миллисекундах для общего количества сущностей от 0 до 1 000 000. Время кадра -- это время, затраченное на отрисовку всего на экране один раз, и чем меньше время кадра, тем лучше производительность кэша ЦП. Более низкие времена кадров означают более высокие кадры в секунду, что важно для интерактивных видеоигр и симуляций в реальном времени.

При тестировании было видно, что значительной разницы в производительности при количестве сущностей до 50 тысяч не выявлено. Различия в производительности начинают проявляться приблизительно при 120 тысячах сущностей, и результаты быстро расходятся в пользу ECSA для оставшихся точек данных. Результаты также показывают, что ECSA имеет растущее преимущество в производительности при увеличении количества сущностей.

Рис. 1 Asteroids Benchmark

Основываясь на результатах, можно сделать вывод, что ECSA достаточно гибок для использования, основанном на данных, что и объектноориентированное программирование, и подходит для использования в играх. Исследование показало, что ECSA обладает значительным преимуществом в производительности при большом количестве объектов и эквивалентной производительностью при меньшем количестве объектов.

Список литературы

1. Entity systems are the future of MMOG development. [Электронный ресурс]. URL: https://t-machine.org/index.php/2007/11/11/entity-systems-are-the-future-of- mmog-development-part-2/comment-page-1/ (дата обращения: 02.05.24);

2. How L1 and L2 CPU caches work, and why they're an essential part of modern chips. [Электронный ресурс]. URL: https://wfoojjaec.eu.org/en/projects/news/2021- 09-15-how-l1-and-l2-cpu-caches-work-and-why-theyre-an-essential-part-of-modern- chips.html (дата обращения: 02.05.24);

3. U. Drepper. What every programmer should know about memory. Red Hat, Inc, 11:2007, 2007. [Электронный ресурс]. URL: https://lrita.github.io/images/posts/memory/What-Every-Programmer-Should-Know- About-Memory.pdf (дата обращения: 02.05.24);

4. S. Bilas. A data-driven game object system. In Game Developers. Conference Proceedings, 2002. [Электронный ресурс]. URL: https://neil3d.github.io/reading/assets/slides/data-driven-game-object-system.pdf (дата обращения: 02.05.24);

5. Unity (игровой движок), [Электронный ресурс]. URL: https://ru.wikipedia.org/wiki/Unity_(игровой_движок) (дата обращения: 02.05.24)

Размещено на Allbest.ru

...

Подобные документы

  • Понятие архитектуры программного обеспечения (ПО). Характеристика этапов процесса проектирования и его окончательный продукт. Языки описания и виды архитектуры ПО, базовые фреймворки. Функции разработчика архитектуры ПО и необходимые ему навыки работы.

    реферат [85,0 K], добавлен 15.02.2014

  • Выбор и обоснование аппаратного обеспечения. Типы архитектуры веб-приложений. Шаблоны проектирования архитектуры приложения. Разработка инфологической модели базы данных. Подготовка к разработке приложения. Рассмотрение причин возникновения паттернов.

    дипломная работа [3,0 M], добавлен 27.11.2022

  • Изучение стадий и этапов разработки программного обеспечения и эксплуатационных документов. Обзор создания архитектуры, распространения и поддержки системы приложения. Анализ проблем интерфейсов между программным обеспечением и операционной системой.

    курсовая работа [1,2 M], добавлен 30.04.2012

  • Элементы и классификация компьютеров. Представление информации, устройства ввода и вывода. Специфика программного обеспечения и организация файлов на дисках. Программно-методический комплекс для изучения архитектуры ЭВМ на базе учебной модели "Нейман".

    курсовая работа [253,3 K], добавлен 23.04.2011

  • Исследование объектно-ориентированного подхода к проектированию программного обеспечения будильника. Модель программного обеспечения. Взаимодействие между пользователями и системой. Диаграммы и генерация программного кода при помощи средств Rational Rose.

    курсовая работа [355,8 K], добавлен 26.09.2014

  • Описания программного продукта компании 1С, предназначенного для быстрой разработки прикладных решений. Исследование типов архитектур построения баз данных. Технология с сетью и файловым сервером. Анализ особенностей трехзвенной архитектуры клиент-сервер.

    курсовая работа [401,4 K], добавлен 12.01.2015

  • Обзор существующих объектных архитектур. Архитектура программного обеспечения. Создание веб-сервиса "Библиотека", предоставляющего механизмы работы с данными на стороне клиентского приложения. WEB-сервис и трехуровневая архитектура в основе приложения.

    лабораторная работа [1,5 M], добавлен 16.06.2013

  • Исследование технологии проектирования базы данных. Локальные и удаленные базы данных. Архитектуры и типы сетей. Программная разработка информационной структуры предметной области. Обоснование выбора архитектуры "клиент-сервер" и операционной системы.

    дипломная работа [1,1 M], добавлен 15.02.2017

  • Элементы объектно-ориентированного программирования. Среда Visual Studio: улучшения интегрированной среды разработки и увеличение ее производительности. Проектирование архитектуры программы и ее интерфейса. Использование двухуровневой системы приложения.

    курсовая работа [516,8 K], добавлен 09.08.2015

  • Изучение основных видов угроз программного обеспечения. Выявление наиболее эффективных средств и методов защиты программного обеспечения. Анализ их достоинств и недостатков. Описания особенностей лицензирования и патентования программного обеспечения.

    курсовая работа [67,9 K], добавлен 29.05.2013

  • Проблемы создания многоядерных процессоров, новейшие классификации и перспективы развития. Особенности реализации многоядерной архитектуры: параллельные вычисления, программное обеспечение. Инструментарий для разработки многопоточных приложений.

    курсовая работа [605,4 K], добавлен 21.03.2013

  • Комплексные характеристики возможностей микропроцессора, базовая структура системы. Понятие архитектуры микропроцессора. Классификации микропроцессоров по типу архитектуры. Особенности программного и микропрограммного управления, режимы адресации.

    реферат [100,7 K], добавлен 20.09.2009

  • Характеристика программных средств, использованных при разработке сайта. Параметры аппаратных средств для демонстрации ПП. Особенности архитектуры программного обеспечения. Анализ модели жизненного цикла программного продукта. Построение Gant-диаграммы.

    курсовая работа [886,9 K], добавлен 30.05.2015

  • Моделирование вариантов объектно-ориентированных программных систем. Проектирование статический структуры, интерфейса, диаграмм компонентов и архитектуры приложения для разработки имитационной модели информационной системы "Центр обслуживания абонентов".

    дипломная работа [951,4 K], добавлен 24.10.2010

  • Основные характеристики процессора: быстродействие, тактовая частота, разрядность, кэш. Параметры материнской платы. Исследование архитектуры домашнего компьютера. Соотношение частоты памяти и системной шины в смартфоне, количество слотов памяти.

    лабораторная работа [1,1 M], добавлен 26.12.2016

  • Области применения быстрых вычислений. Проблемы эффективности последовательных и параллельных программ. Отображение циклов с условными операторами на асинхронные архитектуры. Рассмотрение исследовательских университетских распараллеливающих систем.

    презентация [833,3 K], добавлен 07.08.2015

  • Архитектуры вычислительных систем сосредоточенной обработки информации. Архитектуры многопроцессорных вычислительных систем. Классификация и разновидности компьютеров по сферам применения. Особенности функциональной организации персонального компьютера.

    контрольная работа [910,2 K], добавлен 11.11.2010

  • Понятие, сущность, назначение, структура и принципы архитектуры ЭВМ. Основополагающие принципы логического устройства ЭВМ и ее структура по фон Нейману. Основные методы классификации компьютеров. Характерные особенности архитектуры современных суперЭВМ.

    реферат [103,3 K], добавлен 26.03.2010

  • Виды информации и формы ее представления. Системы счисления, используемые в ЭВМ. Типы операционных элементов. Понятие архитектуры ЭВМ. Организация системы памяти. Принцип программного управления. Синхронный конвейер команд, оценка его производительности.

    шпаргалка [1,7 M], добавлен 04.06.2013

  • Ознакомление с проблемами реализации сервис-ориентированной архитектуры предприятия. Анализ активных элементов бизнес-архитектуры. Рассмотрение инструментов реализации языка ArchiMate в программном средстве Archi. Исследование мотивационных концепций.

    курсовая работа [2,0 M], добавлен 25.08.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.