我正在为空间索引构建莫顿数,我有 8 个无符号的 16 位数字,它们将变成__int128数字。效率至关重要,因此朴素的解决方案(遍历所有内容(或构建单独的 8 个 128 位数字太昂贵了。
我使用的是GCC,目标机器是64位,但没有BMI2支持。
如何加快计算速度?
如果你的机器是x86并且支持SSE2,那么使用movmsk
指令有一个聪明的答案。谷歌SSE2 bit matrix transpose
完整的代码。