0

根据“使用英特尔® 流式 SIMD 扩展 4(英特尔® SSE4)进行架构验证”(英特尔,2008 年),[他们] 添加了指令来帮助一次对两个 16 字节的操作数进行字符搜索和比较。我用 C 编写了一些基本的 strlen() 和 strcmp() 函数,但它们似乎比 glibc 慢。

我可能想尝试使用内联汇编来查看我的项目在输入/输出 XML 时的行为。

我已经读到(在此处),在 strlen() 之类的东西上使用 SMID 充满了潜在的问题(内存对齐),所以我有点担心在生产代码中使用它。

4

1 回答 1

3

glibc 的实现将很难被击败。这些功能经过精心优化,包括用汇编手工编写的部分。这是 glibc 的 strcmp 的 x86_64 实现,使用 AVX2 指令。请注意,它是 800 行:
https ://github.com/lattera/glibc/blob/master/sysdeps/x86_64/multiarch/strcmp-avx2.S

有关更多详细信息,另请阅读 Peter Codes关于 glibc 实现的精彩解释。

于 2020-10-26T02:55:23.583 回答