我读过here英特尔为加速字符串处理而引入SSE 4.2 instructions
。
引用文章:
SSE 4.2指令集,首先在Intel的Core i7中实现, 提供使用的字符串和文本处理指令(STTNI) 用于处理字符数据的SIMD操作。虽然最初 为加速字符串,文本和XML处理而设想的 这些指令的强大新功能在外面是有用的 这些领域,值得重新审视搜索和识别 利用STTNI改进的众多应用程序的各个阶段 性能
答案 0 :(得分:4)
关于软件库,我会看一下Agner Fog的asmlib。它有许多例程的集合,包括几个使用SSE4.2的字符串操作,在汇编中进行了优化。它提供了一些其他有用的功能,我使用CPU上的返回信息,例如每个级别的缓存大小以及支持哪些扩展(例如SSE4.2)。
http://www.agner.org/optimize/asmlib.zip
要使用-msse4.2在GCC编译中启用SSE4.2,或者如果您使用AVX处理器,请使用-mavx
答案 1 :(得分:1)
我不确定gcc是否使用它,但它应该无关紧要,因为文本处理通常是通过glibc完成的。如果你使用string.h中的标准字符串函数(可能cstring也会这样做),并且有一个合理的glibc,你应该自动使用它们。
我已经搜索过了,似乎glibc 2.15(可能更老的)已经有了SSE4.2 strcasecmp优化:
http://upstream.rosalinux.ru/changelogs/glibc/2.15/changelog.html