Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么属于「;“面向数据的设计”;?_C++_C_Performance_Optimization_Latency - Fatal编程技术网

C++ 什么属于「;“面向数据的设计”;?

C++ 什么属于「;“面向数据的设计”;?,c++,c,performance,optimization,latency,C++,C,Performance,Optimization,Latency,面向数据的设计最正式地由这和 然而,除了显而易见的之外,我想知道编程的其他方面属于“面向数据的设计”吗?SIMD/SSE指令是否适用?如何减少TLB失误?还是CPU亲和力 到目前为止,我对国防部的唯一理解是“任何能够减少缓存丢失的东西”。有什么不明显的东西属于面向数据的设计吗?对我来说很明显的是,国防部是以数据为中心的设计。 从上下文中看得更清楚。我对它的第一印象很明显。 面向对象是将您的解决方案建模为真实世界模型。这很好,因为它更容易理解。但是你的硬件不喜欢这样。 面向数据就是以数据为中心。平

面向数据的设计最正式地由这和

然而,除了显而易见的之外,我想知道编程的其他方面属于“面向数据的设计”吗?SIMD/SSE指令是否适用?如何减少TLB失误?还是CPU亲和力


到目前为止,我对国防部的唯一理解是“任何能够减少缓存丢失的东西”。有什么不明显的东西属于面向数据的设计吗?

对我来说很明显的是,国防部是以数据为中心的设计。 从上下文中看得更清楚。我对它的第一印象很明显。 面向对象是将您的解决方案建模为真实世界模型。这很好,因为它更容易理解。但是你的硬件不喜欢这样。 面向数据就是以数据为中心。平台喜欢什么

高速缓存线 以下是一些平台的详细信息。 但它比缓存线更重要

面向数据使并发编程比面向对象的方式简单得多。 OOD对人类更友好。因为每个人都知道真实的世界。 DOD您需要更多地了解平台,对数据进行建模以获得最佳性能。以及您对该数据所做的转换


国防部的任务是了解平台,了解问题领域。与国防部一起最大限度地利用信息技术。

你能陈述一下你认为国防部“显而易见”的东西吗?这将使专家更容易列出你认为“超越明显”的答案。基本上是PDFS中给出的例子。在这里,代替了包含对象的数组,每个对象都有五个属性,你有5个数组,一个只包含属性。这似乎是所有文档所描述的,这提高了缓存命中率。因此,我的问题是,“国防部是否有任何东西可以减少缓存未命中率?”因为这是值得的——我已经阅读国防部多年了。它总是被描述为“缓存敏感”编程,但它总是只提供同一个“集合条带化”示例。由于
X
的任何容器都可以改装以使用此技术,“数据条带优化”可能比任何一种设计理念都要好。@DrewDormann那么您认为SIMD/SSE指令是DOD吗?-因为它们提高了性能吞吐量?我想有人可能会说它们是一种数据设计(设计并行计算路径)?你读过国防部的资料,但你并不肯定它是什么。我会从其他程序员那里假设同样的情况,只是避免使用这个术语。像“缓存未命中”和“SIMD”这样的术语已经存在,人们对此非常了解。“提高性能吞吐量”这一更为广泛的概念也有一个众所周知的术语。两个世界的一个例子将使这个想法更加完善。