主要观点:几年前写过关于使用 SWAR 技巧批量快速转换为小写的内容,几天前被 Olivier Giniaux 关于处理小字符串的优化文章吸引,此文是关于优化 DNS 名称系列的一部分,介绍了适合字符串处理的一些 SIMD 指令集(ARM SVE、RISC-V Vector 扩展、AVX-512-BW)及使用 AVX-512-BW 实现的 tolower64()函数,包括填充寄存器、比较字符、掩码操作、批量加载存储等,还进行了基准测试,得出 AVX-512-BW 处理字符串效果好、性能平稳等结论,代码可在网站获取,感谢他人提供相关版本和指出错误。
关键信息:
- 相关文章系列:tolower() in bulk at speed using SWAR tricks等。
- 可用 SIMD 指令集:ARM SVE、RISC-V Vector 扩展、AVX-512-BW。
- tolower64()函数实现细节:填充寄存器、比较字符、掩码操作等。
- 基准测试结果:pink 的 tolower64 线性能较好,green 的 copybytes64 线速度提升不明显等。
重要细节:
- 使用
*
在 Intel 内在函数指南中搜索字节级 AVX-512 函数。 - 掩码操作中通过
len_bits
和len_mask
处理字符串长度。 - 不同函数在不同长度字符串下的性能表现及原因。
- 代码可在https://dotat.at/cgi/git/vectolower.git获取。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。