我们有一个大的类,有68个int,22个双成员,还有4个成员作为类。e.g
Class A{
public int i1
public int i2
public int i3
....
public Order order1
public Order order2
...
public double..
}1: i1、i2、i3的内存是物理连续的吗?
2:对于A类,它是存储指向order1 & order 2的指针,还是存储order 1& order 2的内容?
还有另一个类B,它有一个成员作为A的数组,有365个A。所以B的内存可能非常大。我担心的是,如果B的大小太大,我们可能会丢失很多二级缓存,从而降低性能。我们主要对i1的值求和,对i2的值求和,并对i3的值求和等。例如,如果对所有365 A的i1求和,那么所有365A的i1将不会持续驻留在内存中。因此,我们可能会命中某些缓存缺失,从而获得不好的性能。
我正在考虑使用类B,但删除类A,并将A中的所有元素移动到B,这样我们就可以获得
Class B {
public array_of_i1
public array_of_i2
..
}这样,当我计算i1或i2的总和时,所有的i1或i2都坐在一起,所以也许我们可以获得性能改进?
由于班级很大,我想在更改之前征求您的意见。
发布于 2010-11-11 22:23:52
它存储指针。,,dependent.
https://stackoverflow.com/questions/4155263
复制相似问题