Описание тега data-oriented-design
None Ориентированное на данные проектирование - это практика проектирования программного обеспечения путем разработки преобразований для правильно сформированных данных, где правильное формирование определяется целевым оборудованием и преобразованиями, которые будут работать с ним. Иногда данные нечетко определены, а иногда и аппаратное обеспечение столь же непонятно, но в большинстве случаев хорошее знание аппаратного обеспечения может помочь почти в каждом программном проекте.
1
ответ
Почему обработка нескольких потоков данных медленнее, чем обработка одного?
Я тестирую, как чтение нескольких потоков данных влияет на производительность кэширования ЦП. Я использую следующий код для сравнения. Тест считывает целые числа, хранящиеся последовательно в памяти, и записывает частичные суммы обратно последовател…
23 янв '15 в 10:09
3
ответа
Как прочитать файл и построить структуру данных на основе входного файла с использованием C++?
Я думаю, это должно быть возможно. Я пытался, но не мог найти хороший ответ. Я в основном хочу сделать динамическую структуру. Я хочу прочитать файл, который сообщает мне типы данных, которые будет содержать моя структура. Основываясь на этих значен…
14 фев '18 в 14:38
0
ответов
Ориентированный на данные дизайн и свойства зависимостей
Поэтому я углубляюсь в область ориентированного на данные проектирования и думаю о реализации системы пользовательского интерфейса с ее использованием. В WPF существует понятие свойства зависимости, которое имеет одну ценную особенность в том, что о…
23 фев '19 в 21:39
2
ответа
Расположение памяти в Javascript - ориентированный на данные против объектно-ориентированного дизайна
Исходя из опыта C/C++, расположение объектов в памяти с точки зрения уменьшения потерь в кеше - это то, что особенно важно при работе на консолях. Проектирование, ориентированное на данные, часто предпочитается объектно-ориентированному проектирован…
30 июл '14 в 15:46
7
ответов
Понимание кеш-ориентированных, ориентированных на данные объектов и дескрипторов
using namespace std; Рассмотрим традиционный подход ООП к управлению объектами / объектами: struct Entity { bool alive{true}; } struct Manager { vector<unique_ptr<Entity>> entities; // Non cache-friendly void update() { // erase-remove_i…
15 окт '13 в 16:02
1
ответ
Должны ли типы иметь методы в ориентированном на данные дизайне?
В настоящее время мое приложение состоит из трех типов классов. Это должно следовать ориентированному на данные дизайну, пожалуйста, исправьте меня, если это не так. Это три типа классов. Примеры кода не так важны, вы можете пропустить их, если хоти…
02 мар '14 в 12:22
2
ответа
Как бороться с удалением объекта при непрерывном размещении?
Недавно я обнаружил преимущества Data Oriented Design. Это выглядит очень впечатляюще. Одним из моментов является группирование данных по типу и доступу, причем не все вместе в объектах, а в массивах, чтобы предотвратить ошибки кэша и улучшить обраб…
06 окт '12 в 19:09
1
ответ
Как применить Data-Oriented Desing, когда структура содержит различное количество элементов во внутреннем векторе?
Я хотел бы применить Data-Oriented Design (на основе, например, этой статьи) к моему простому физическому движку. И я сосредоточен на оптимизации тестирования столкновений, так как это самая дорогая его часть. Я организовал ограничивающие сферы, кот…
11 окт '15 в 15:31
2
ответа
Как бороться со многими полями ввода с одинаковыми именами и публиковать в PHP?
Допустим, у меня есть структура HTML, которая выглядит следующим образом. Каждое левое поле контекста и правое поле контекста связаны между собой, и в бэкэнде должна быть возможность связать левую часть с правым коллегой. <table> <tbody>…
31 окт '15 в 17:04
2
ответа
Кеш инструкций и условные операторы
Я пытаюсь сориентировать свой код, чтобы использовать кэш как можно более эффективно, используя ориентированный на данные дизайн, и я впервые думаю о таких вещах. Я разработал способ зацикливания той же самой инструкции, которая рисует спрайт на экр…
03 июн '12 в 22:10
2
ответа
Менеджер безотраслевой памяти?
Кто-нибудь думал о том, как написать менеджер памяти (на C++), который полностью свободен от веток? Я написал пул, стек, очередь и связанный список (выделение из пула), но мне интересно, насколько правдоподобно писать свободный менеджер ветвления об…
22 мар '10 в 10:21
2
ответа
Как применить DOP и сохранить хороший пользовательский интерфейс?
В настоящее время я хочу немного оптимизировать свой 3d движок для консолей. Точнее, я хочу быть более дружественным к кешу и выровнять свои структуры, ориентируясь на данные, а также сохранить свой приятный пользовательский интерфейс. Например: boo…
06 окт '10 в 12:23
2
ответа
Ориентированный на данные дизайн в ООП
На этих слайдах (после слайда 15) предлагается использовать void updateAims(float* aimDir, const AimingData* aim, vec3 target, uint count) { for(uint i = 0; i < count; i++) { aimDir[i] = dot3(aim->positions[i], target) * aim->mod[i]; } } п…
27 авг '12 в 12:03
3
ответа
Как использовать std:: vector<std:: tuple <A, B >> для управления памятью (изменение размера, резервирование,...), но на самом деле сохранить As перед Bs непрерывно
Я работаю над системой компонент-сущность (ECS), вдохновленной серией блогов Bitsquid. Мой ECS состоит из двух основных классов: System (отвечает за создание / уничтожение сущностей) и Property (отвечает за хранение std::vector компонента для данной…
26 мар '17 в 16:15
1
ответ
Существует ли непрерывно хранимая структура данных хэш-карты?
Думайте о коллекциях различных типов как Position, Color, Name, Экземпляры могут быть связаны с использованием того же ключа в коллекции. Ключи являются глобальными уникальными идентификаторами длиной 64 бита. В настоящее время я использую хэш-карту…
09 мар '14 в 15:48
4
ответа
Какой из них наиболее удобен для кэша?
Я пытаюсь получить хорошее представление о проектировании, ориентированном на данные, и о том, как лучше всего программировать с учетом кеша. В принципе, есть два сценария, которые я не могу точно решить, какой из них лучше и почему - лучше ли иметь…
01 окт '13 в 21:25
2
ответа
Абстракция C++ с нулевой стоимостью для макетов памяти SoA/AoS
Скажем, у меня большой код с использованием структуры памяти Array of Structures (AoS). Я хотел бы создать абстракцию с нулевой стоимостью в C++, которая позволяет мне переключаться между AoS и SoA с минимальными усилиями по рефакторингу. Например, …
28 май '18 в 23:56
0
ответов
Обнаружение столкновений на основе данных
Я пытаюсь сделать обнаружение столкновений с точки зрения данных. Я хочу убрать врага после обнаружения столкновения, не уверенный, как сделать его максимально оптимальным для процессора, сейчас я делаю так: bool EnemyManager::isCollidedWithBullet(f…
12 мар '16 в 08:47
2
ответа
Ориентация объекта, ориентация данных, загрязнение кэша и очевидность кэша
В обычной объектно-ориентированной практике это не значит, что редкие объекты имеют несколько несвязанных свойств-членов. И когда объекты обрабатываются, нередко это делается за несколько проходов, которые нацелены на разные части их свойств. В связ…
11 сен '12 в 08:20
6
ответов
Что такое ориентированный на данные дизайн?
Я читал эту статью, и этот парень продолжает рассказывать о том, как каждый может получить большую выгоду от смешения в ориентированном на данные дизайне с ООП. Однако он не показывает никаких примеров кода. Я погуглил это и не смог найти никакой ре…
29 окт '09 в 04:13