基于 C99 的快速 Base64 流编码器/解码器,具有 SIMD 加速
在 x86 上,库会进行运行时功能检测。第一次调用时,库会确定适合该机器的编码/解码例程。然后,它会将它们保存起来,直到程序运行结束。如果您的处理器支持 AVX2、SSSE3、SSE4.1、SSE4.2 或 AVX 指令,库会选择一个优化的编解码器,使其一次可编码/解码 12 或 24 个字节,这比"纯"字节级的编解码器快了四倍或更多。
NEON 支持在编译时就被硬编码为开启或关闭,因为 ARM 上无法检测可移植的运行时功能。即使您的处理器不支持 SIMD 指令,这也是一个非常快速的库。回退例程可以在一次循环中处理 32 或 64 位的输入,具体取决于处理器的字长,这仍然比原生的字节级实现要快得多。在某些 64 位机器上, 64 位的例程甚至比 SSSE3 例程更快。
据作者所知,在原始发布时,这是唯一一款提供 SIMD 加速的 Base64 库。作者撰写了一篇文章,解释了一种可能的 SIMD 方法来编码/解码 Base64。该文章可以帮助您了解代码的运作方式以及原因。
暂无开放 Issues,或尚未同步最近议题。