私はビットマップを持っています
uint64_t bitmap[10000]
システムに割り当てられたリソースを追跡します。ここで問題となるのは、このビットマップの最初のunset(zero)ビットをどのように効率的に見つけるかです。
ffsll(unsigned long long)
glibcには、最初のセットビットを見つけるための機能があることを認識しています。これは、ハードウェア命令を使用して行うと思います。
私の場合、この関数を使用するには、最初に配列を初期化してすべてのビットを1に設定する必要があります。次に、リソース割り当てを行うときに、配列で最初のゼロ以外の単語を線形に検索する必要があります。次に、ffsll()を使用して最初のセットビットを見つけます。
どうすればもっと速くできますか?
更新:私はx86-64CPUを使用しています。