数据导向设计是由Sony Research document和this document最正式介绍的。
然而,除了显而易见之外,我想知道编程的其他方面属于“面向数据的设计”吗? SIMD / SSE会说明吗?减少TLB未命中的任何事情怎么样?还是CPU亲和力?
到目前为止,我对DOD的唯一理解是“减少缓存未命中的任何事情”。有哪些不明显的东西属于面向数据的设计?
答案 0 :(得分:1)
对我来说显而易见的是,DOD是关于以数据为中心的设计。 在上下文中更多地看到它。我对它的第一印象是对抗OOD。 面向对象是将您的解决方案建模为现实世界模型。这很容易理解,这很好。但是你的硬件并不是那样的。 面向数据以数据为中心。平台如何喜欢它。
SMID,缓存行 是一些平台细节。 但是它还有更多的缓存行。
面向数据使得并发编程比OoD方式更容易。 OOD对人类更友好。每个人都知道现实世界。 DOD您需要更多地了解该平台,对数据进行建模以获得最佳性能。以及你对这些数据进行转换的内容。