什么属于“面向数据的设计”?

时间:2013-02-13 23:23:55

标签: c++ c performance optimization latency

数据导向设计是由Sony Research documentthis document最正式介绍的。

然而,除了显而易见之外,我想知道编程的其他方面属于“面向数据的设计”吗? SIMD / SSE会说明吗?减少TLB未命中的任何事情怎么样?还是CPU亲和力?

到目前为止,我对DOD的唯一理解是“减少缓存未命中的任何事情”。有哪些不明显的东西属于面向数据的设计?

1 个答案:

答案 0 :(得分:1)

对我来说显而易见的是,DOD是关于以数据为中心的设计。 在上下文中更多地看到它。我对它的第一印象是对抗OOD。 面向对象是将您的解决方案建模为现实世界模型。这很容易理解,这很好。但是你的硬件并不是那样的。 面向数据以数据为中心。平台如何喜欢它。

SMID,缓存行 是一些平台细节。 但是它还有更多的缓存行。

面向数据使得并发编程比OoD方式更容易。 OOD对人类更友好。每个人都知道现实世界。 DOD您需要更多地了解该平台,对数据进行建模以获得最佳性能。以及你对这些数据进行转换的内容。

DOD是关于,了解平台并知道问题域。用DOD充分利用它。