我试图找到处理结构集数组的最有效方法。即,目前我有以下结构:
struct myStruct{
double p1;
double p2;
bool p3;
double w;
}
因此,我建模的对象具有三个属性和分配给它们的权重。现在,它们排列在固定大小的数组中,比如 10,并且对象权重有多种组合,比如 1000:
const int nObj = 10;
const int n = 1000;
myStruct comb[n][nObj];
最后有几个函数我将 10 大小的数组传递给:
double evalComb(myStruct (&ms)[nObj], double q1, double q2){
double output = 0;
for(int i = 0; i < nObj; i++){
output += // calculate some stuff using p1,p2,p3,w and other params
}
return output;
};
现在,问题是,的 10 个值的集合在所有 1000 个组合p1
中是固定的(但不是 const ),唯一改变的是 10 个 weights 的集合。这种让我觉得复制所有 1000 次是浪费内存......我有工作代码,但想让它更快,我的理解是这将是最明显的优化地方(如该函数被调用了数百万次,并且 90% 的时间都在那里)。从结构中获取权重并让二维双数组留下一维结构数组会更好吗?这意味着将另一个数组参数传递给函数,它不会减慢速度吗?也许我应该在其中包含带有数组的结构?任何其他可能出现的问题?p2
p3
w