Data Oriented Design наиболее формально представлен этим Документ Sony Research а также этот документ.
Однако, помимо очевидного, мне было интересно, какие другие аспекты программирования подпадают под «Data Oriented Design»? Будут ли инструкции SIMD / SSE? Как насчет всего, что уменьшает количество пропусков TLB? Или CPU-близость?
Пока что мое единственное понимание DOD — это «все, что сокращает количество кешей». Есть ли что-то неочевидное, что относится к Data Oriented Design?
Для меня очевидно, что DOD — это дизайн, ориентированный на данные.
Чтобы увидеть это больше в контексте. Я беру очевидное первое впечатление об этом встречной части OOD.
Объектно-ориентированное моделирование вашего решения для модели реального мира. Что приятно, так как это легче понять. Но вашему оборудованию это не нравится.
Данные ориентированы на данные. Как платформе это нравится.
SMID, линия кэша
Вот некоторые детали платформы.
Но это намного больше, чем кеширование строк.
Ориентация на данные делает параллельное программирование намного проще, чем OoD.
ООД гораздо более дружелюбен для людей. Как каждое тело знает реальный мир.
DOD вам нужно знать гораздо больше о платформе, чтобы моделировать данные, чтобы получить максимальную производительность. А также, что за преобразования вы делаете на этих данных.
DOD о, знать платформу и знать проблемную область. Чтобы получить максимум от этого с DOD.
Других решений пока нет …