[問題] virtual動態多型與手工轉型+bit field
一個開發多年的codebase
裡面留有非常非常多的
switch (obj->type) {
case type1: ...
case type2: ...
(手工static向下轉型處理)
}
看到這裡當然會想著為什麼不用virtual來做
只是又想到個問題
這個obj的數量數以百萬計
如果用virtual
那多出來一個指向vt的指標對大量的小物件而言是很貴的
在此codebase中 obj的type是用bit field來節省空間
想問的是
在極大量的小物件 想作動態多形
而且一定要避免空間浪費
除了手工轉型+bit field
有什麼更好的實作方式嗎?
compiler有沒有可能提供option讓virtual的內部實作是用bit field來記type?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.177.154
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1445930201.A.FD6.html
※ 編輯: Arton0306 (220.130.177.154), 10/27/2015 15:17:18
推
10/27 15:36, , 1F
10/27 15:36, 1F
→
10/27 15:36, , 2F
10/27 15:36, 2F
→
10/27 15:37, , 3F
10/27 15:37, 3F
→
10/28 20:15, , 4F
10/28 20:15, 4F