面向数据的设计最正式地介绍了这个 Sony Research document和 this document .
然而,除了显而易见的之外,我想知道编程的哪些其他方面属于“面向数据的设计”? SIMD/SSE 指令?有什么可以减少 TLB 失误的吗?还是 CPU 亲和性?
到目前为止,我对 DOD 的唯一理解是“任何减少缓存未命中的东西”。有什么不明显属于面向数据设计的吗?
最佳答案
对我来说显而易见的是,国防部是以数据为中心的设计。 在上下文中更多地查看它。我对它的明显第一印象与 OOD 相对应。 面向对象正在将您的解决方案建模为现实世界模型。这很好,因为它更容易理解。但是您的硬件不喜欢那样。 面向数据是以数据为中心的。平台如何喜欢它。
SMID,缓存行 是一些平台的细节。 但是除了缓存行之外还有更多内容。
面向数据使并发编程比 OoD 方式更容易。 OOD对人类更友好。每个人都知道现实世界。 DOD 你需要更多地了解平台,对数据进行建模以获得最佳性能。以及您对这些数据执行的转换。
DOD 是关于了解平台和了解问题领域的。与国防部一起充分利用它。
关于c++ - 什么属于 "Data Oriented Design"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865180/