作者clarkman (涼雨)
看板C_and_CPP
標題[問題] linklist和forloop處理資料的速度
時間Fri Jun 21 01:57:22 2013
目前想管理一組編號,可能是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