我得到了一些具有某些值的对象,例如: (1)
struct massPoint {
double pos;
double vel;
double acc;
} objects[LOTS];
或在数组中相同:
(2)
double pos[LOTS];
double vel[LOTS];
double acc[LOTS];
第一个问题:如果我打电话给(1)填充数据和(2)串行数据,这是对的吗?
第二个问题:如果我做一些只影响vel和acc而没有pos的操作,并且我有很多,那么(2)会更好,因为它在缓存性能方面会更好,因为pos []不必以这种方式缓存,并且(1)它必须?或者我根本没有得到这个概念?
答案 0 :(得分:1)
不知道你的第一个问题
对于您的第二个问题,没有一般答案,这取决于您的架构和使用模式。
总而言之,它可能取决于很多因素,但在许多情况下第二种方法更可取的倾向
答案 1 :(得分:0)
如果您正在对 位置进行操作,那么只是速度,或只是加速度,那么(2)更好。
在其他情况下 - 你在大量计算中使用的不仅仅是一种类型 - 那么(1)会更好。
这是假设:
虽然,老实说,这听起来像是过早优化:最好的办法是用valgrind之类的内容进行分析,这样就可以告诉你平台的确切答案。