您的位置:首页 > 其它

内存寻址优化

2016-04-29 15:21 274 查看

内存寻址的简单优化

问题描述:

在程序中,使用malloc或new创建一块内存用来存放二维或多维数组,当需要对数组进行遍历或进行块操作时,就需要对内存进行寻址操作,在寻址时,不可避免的存在不连续取址操作。

对于不连续寻址分成两种,一种是随机寻址,一种是有规律的寻址入多维矩阵。

对于随机寻址可以使用基址+相对地址寻址即可。

对于有规律的寻址,应尽量避免乘法的使用,尽量避免每次使用绝对地址。

void breakPath(lprec *lp, int * path_list, int path_length)
{
double * row_LE;
int * cur_node_ptr;
// allocation
row_LE = new double[edge_num_count];
memset(row_LE, 0, edge_num_count*sizeof(double));

//循环
cur_node_ptr = path_list;//使用基地址
for (int node_idx = 0; node_idx < path_length - 1; node_idx++,cur_node_ptr++)
{
int matrix_offset = cur_node_ptr[0] * node_num_count + cur_node_ptr[1];//偏移量单独计算
row_LE[matrix[matrix_offset]] = 1;
}
// N nodes -> N-1 path-> less then N-1, so the sum of all the edges is path_length-2
add_constraintex(lp, edge_num_count, row_LE, colno, LE , path_length-2);

// destory
delete[] row_LE;
};


通过以上优化方法,可以提升寻址速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: