我有一张位图
uint64_t bitmap[10000]
跟踪系统中分配的资源。现在的问题是如何有效地找到该位图中的第一个未设置(零)位?
我知道ffsll(unsigned long long)
在 glibc 中可以找到第一个设置位,我假设它使用硬件指令来完成。
要在我的情况下使用此函数,首先我需要初始化数组以将每个位设置为 1,然后在进行资源分配时,我必须线性搜索数组以查找第一个非零字。然后使用 ffsll() 找到第一个设置位。
我怎样才能更快地做到这一点?
更新:我在 x86-64 cpu 上。