[問題] linklist和forloop處理資料的速度

看板C_and_CPP作者 (涼雨)時間12年前 (2013/06/21 01:57), 編輯推噓2(205)
留言7則, 5人參與, 最新討論串1/2 (看更多)
目前想管理一組編號,可能是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

06/21 02:12, , 1F
第二個方法就算不錯了,而且很多噁心的 bit-hacker 可用
06/21 02:12, 1F

06/21 02:12, , 2F
2夠你用了 卍解 freelist
06/21 02:12, 2F

06/21 02:18, , 3F
補一下,掃bit應該用不到7次,一般大概是 5 次可完成,
06/21 02:18, 3F

06/21 02:19, , 4F
keyword : log2(int) , de bruijn sequence.
06/21 02:19, 4F

06/21 09:10, , 5F
喔喔,了解,會google一樓和四樓的關鍵字
06/21 09:10, 5F

06/21 11:27, , 6F
第二種跟 C++ std::bitmap 一樣道理嗎? @@
06/21 11:27, 6F

06/21 11:46, , 7F
直接開兩組,一組free,一組使用中,借還時同步更新
06/21 11:46, 7F
文章代碼(AID): #1HmqA5Hs (C_and_CPP)
文章代碼(AID): #1HmqA5Hs (C_and_CPP)