如何使用 Assembly 优化这个 8 位位置 Popcount?
Go 中提供的 __mm_add_epi32_inplace_purego 实现由于昂贵的传递而不是最佳的[8]int32 数组。为了提高性能,建议改为传递指向数组的指针。
但是,问题超出了优化此特定函数的范围,而是探索使用汇编对字节上的位置总体计数算法进行内部循环的优化.
汇编优化
提供的汇编代码提供了两种位置填充计数算法:
引入的改进
汇编代码利用各种技术来改进性能:
性能基准
基准表明,与纯 Go 中的简单参考实现相比,汇编优化带来了显着的性能改进:
完整源代码
两种汇编变体的完整源代码可以在 GitHub 上找到。该代码还包括一个可移植库,可用于任何 Go 程序中的这两种变体。
结论
通过在汇编中实现位置总体计数算法,显着提高了性能可以获得收益。提供的汇编代码利用各种优化来最大化吞吐量。有关更多详细信息和示例,请参阅 GitHub 存储库。
以上是汇编优化如何提高位置 Popcount 算法的字节性能?的详细内容。更多信息请关注PHP中文网其他相关文章!