内存寻址优化

来源:互联网 发布:淘宝客 返利网 编辑:程序博客网 时间:2024/05/18 01:55

内存寻址的简单优化


问题描述:

在程序中,使用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;};

通过以上优化方法,可以提升寻址速度。

0 0
原创粉丝点击