内存寻址优化
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; };
通过以上优化方法,可以提升寻址速度。
相关文章推荐
- swift 的高阶函数的使用代码
- pyqt4 基本窗口,窗口布局,设置logo,窗口最大最小化
- pyinstaller生成exe笔记
- 一个简单python语言web server,输出机器上的HW信息
- MJRefresh的那些坑
- 配置emacs python 开发环境
- io流写入操作日记记录中换行需要注意的点
- Socket、TCP/IP、HTTP、FTP和网络编程
- Jlink20P接口定义
- SQL-创建和操纵表
- 链表常见问题
- EventBus的使用详解
- hdu 1159 最长公共子序列
- 关于发邮件报错535 Error:authentication failed解决方法
- cocos2dx 3.3 cocos studio的交互性问题
- Jupyter Notebook的快捷键
- 设计模式(一):单例模式
- 异步网络请求
- php 正则应用
- Windows Server 2003 mysql主从同步