OffsetAllocator 这是一个快速的硬实时 O(1) 偏移分配器,碎片最小化。 它使用 256 个 8 位浮点分布的箱(3 位尾数 + 5 位指数),以及一个两级位域,使用 2x LZCNT 指令来找到下一个可用箱,使所有操作都为 O(1)。 根据浮点分布的箱大小可确定硬性上限,而不考虑大小类别。 2 的幂次方的箱会浪费高达 +100% 的内存(平均为 +50%)。 我们的浮点箱会浪费高达 +12.5% 的内存(平均为 +6.25%)。
分配元数据存储在一个单独的数据结构中,使此分配器适用于对任何资源进行子分配,例如 GPU 堆、缓冲区和数组。返回分配连续范围的第一个元素的偏移量。
免责声明
早期的一个周末原型。单元测试通过,但覆盖率仍然不足 100%。使用时请自行承担风险!