作者moonshade (一只欧拉猫)
看板NTUGIEE_EDA
标题[问题] 记忆体管理...
时间Sun Mar 23 01:41:50 2008
最近的工作刚好是记忆体减肥,
有许多工程师因为贪便宜容易犯的错误...
1.
用 calloc 之类的东西来要单一个linklist item的记忆体,
结果calloc了比实际使用记忆体还多两倍左右的记忆体,
如果知道这个list很长的话,应该用mem page去排。
用calloc的话会浪费header和padding的空间
2.
可以用int index却用了pointer,
int 可以指到4G,当今应该还没有design
多到超过4G的instance or rectangle,
int 跟 pointer 差两倍,一个linklist item
大小会差两倍。
3.
喜欢用四个方向的data structure 来表示空间
例如
struct CELL{
CELL up;
CELL down;
CELL left;
CELL right;
};
4个pointer 就吃掉四倍了...
这种东西sort完用index array来排就好了
排x 和y 方向的index array,不要用pointer
至少省一半以上
(INDEX ARRAY 请参考CSC (Compressed sparse column)和CSR matrix )
这都是10多年经验的工程师会干的事,
大概因为在赶工都随便写。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.7.210