看板 NTUGIEE_EDA 關於我們 聯絡資訊
最近的工作剛好是記憶體減肥, 有許多工程師因為貪便宜容易犯的錯誤... 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