看板 C_and_CPP 關於我們 聯絡資訊
目前想管理一組編號,可能是0~255,然後想要做到快速處理 用C處理 現在考慮兩種作法,不太知道怎麼樣才能做到高效率。 請問大家有更好的辦法嘛?以及下面兩種我該選擇哪一種? 1. 使用linklist,當編號空出來就塞到linklist裡,要用編號就 直接取走,移除這個node 缺點:一直new和free,還有串連、移除 =>這是目前的架構 2. 開一個32byte的陣列,每個bit當成是一個id 一次掃一個byte,如果是ff,代表全用掉,往下一個byte掃 當發現不是ff,就開始掃bit,掃到後換算成id 缺點:怕掃資料花太多時間,最壞的案例應該是id 255,先掃16次byte 確認有無用完,然後再掃七次bit確認有沒有空的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.235.217.27
EdisonX:第二個方法就算不錯了,而且很多噁心的 bit-hacker 可用 06/21 02:12
damody:2夠你用了 卍解 freelist 06/21 02:12
EdisonX:補一下,掃bit應該用不到7次,一般大概是 5 次可完成, 06/21 02:18
EdisonX:keyword : log2(int) , de bruijn sequence. 06/21 02:19
clarkman:喔喔,了解,會google一樓和四樓的關鍵字 06/21 09:10
karaokstar:第二種跟 C++ std::bitmap 一樣道理嗎? @@ 06/21 11:27
bigpigbigpig:直接開兩組,一組free,一組使用中,借還時同步更新 06/21 11:46