- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在常规的面向对象的实践中,稀有对象并不是具有多个不相关的成员属性。而且,在处理对象时,通常会针对对象属性的不同部分进行不同的遍历。
在这方面,创建对象集合的典型方法似乎不是一种非常有效的方法。考虑到计算机访问内存的方式以及缓存行的平均大小,很有可能缓存中的缓存已被不需要的东西填满,而只是碰巧是相邻的,因此最终浪费了缓存的容量并增加了停顿和执行延迟。
更糟糕的是使用多态并动态分配对象而没有内存池和自定义分配器的做法。在这种情况下,不仅高速缓存中会填充不需要的数据,而且由于动态内存分配使用了任意地址,因此预取器也无法正常工作。
挽救工作要回到OOP之前的时间,并选择数据定向,这似乎是对性能至关重要的应用程序,操作系统等的开发的优先选择。但是,为什么不使用两者的混合版本呢?排序面向数据的对象编程吗?
经过漫长的序曲,让我们谈谈眼前的问题。我没有足够大的项目来测试此概念的效率,因此非常欢迎社区的理论知识。
而不是对象而不是存储自己的数据成员的对象,它们仅存储对集合的引用,在该集合中,其数据成员按顺序存储在其自己的容器中,并且它们的成员方法从这些容器返回数据,这样不需要数据结束的几率减少其进入CPU的速度,并增加近乎“ future ”所需的数据几率。合理的假设是,这种方法将提高预取器效率,缓存命中率和使用效率,还将减少自动和手动并行化所涉及的延迟。
你怎么看?
后期编辑:如果考虑结构和类填充,则应用“数据定向模式”会更加有益,如果“模型”具有char
和int
数据成员,则将以OOP方式对其进行填充,这将只会进一步污染高速缓存,但是面向数据的存储模式可以按顺序存储所有char
和所有int
,而不会浪费空间和缓存。
最佳答案
首先,漂亮的幻灯片演示。嗯,据我所知,您的问题与陈述方式大不相同。变量被随机存储在主存储器中,甚至是对象属性。如果您尝试将内存分配给连续的数据结构,则您的数据结构的大小将受到主内存中最大的“气泡”的限制,否则它将不会纯粹是连续的。也许您认为是这样的:
class MyClass
{
public:
MyClass()
{
m_dataMembers = new GenericObject[DATA_MEMBERS_AMOUNT];
//initialize array values...
}
int getMyVar()
{
return (int)m_dataMembers[MY_VAR_INDEX];
}
//others functions...
private:
GenericObject* m_dataMembers;
}
关于performance - 面向对象,数据方向,缓存污染和缓存明显性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12365527/
通常当我请求线程转储时,系统性能不佳的症状很容易解释;也就是说,通常我会看到许多线程显然正在等待一个已被获取但未被另一个释放的监视器。 在这种情况下,我有很多线程在等待监视器 (0x965ad100)
C:\Users\shagy\Desktop\3RD YEAR 2ND SEMESTER\SPM\Newfolder\SPM-SMS>npm start npm ERR! path C:\Users\
我是一名优秀的程序员,十分优秀!