10

我在这里读到英特尔推出SSE 4.2 instructions的用于加速字符串处理的文章。

引用文章:

SSE 4.2 指令集首先在英特尔酷睿 i7 中实现,提供字符串和文本处理指令 (STTNI),利用 SIMD 操作处理字符数据。尽管最初是为加速字符串、文本和 XML 处理而设想的,但这些指令的强大新功能在这些领域之外很有用,值得重新审视众多应用程序的搜索和识别阶段,以利用 STTNI 来提高性能

  • 如果这些指令可用,gcc 是否会使用它们?
  • 如果有,是哪个版本?
  • 如果没有,是否有任何提供此功能的开源库?
4

2 回答 2

4

关于软件库,我会看看 Agner Fog 的 asmlib。它有许多例程的集合,包括几个使用 SSE4.2 的字符串操作,在汇编中进行了优化。它提供的一些其他有用的功能,我使用它们返回关于 CPU 的信息,例如每个级别的缓存大小以及支持哪些扩展(例如 SSE4.2)。

http://www.agner.org/optimize/asmlib.zip

要在 GCC 中启用 SSE4.2,请使用 -msse4.2 编译,或者如果您的处理器带有 AVX,请使用 -mavx

于 2013-05-15T09:46:37.847 回答
2

我不确定 gcc 是否使用它,但这并不重要,因为文本处理通常是通过 glibc 完成的。如果您使用 string.h 中的标准字符串函数(可能 cstring 也会这样做),并且有一个合理的 glibc,您应该自动使用它们。

我已经搜索过它,似乎 glibc 2.15(可能甚至更老的都有它)已经有 SSE4.2 strcasecmp 优化:

http://upstream.rosalinux.ru/changelogs/glibc/2.15/changelog.html

于 2014-09-30T03:19:27.270 回答