c - 用于反向字符串的高效且便携的 strcmp

标签 c performance strcmp

strcmp,至少使用 g++,对许多架构有很多优化。在我的 Core2Duo E8400 电脑中,strcmp 比使用直接实现快两倍。

我的问题是是否存在某个库提供了比较两个“反向字符串”的函数。反向字符串 char *s1开始于 s1并以一些 s1-n 结束这样 s1-n == '\0' (其中 n >= 0 和所有 0 <= n' < n, s1-n' != '\0' )。

当然,要求是这个函数必须像strcmp那样高效、可移植。

编辑:我只需要知道两个字符串是否相等(所以我不需要知道哪个更大。那么 strcmp 的相同优化原则上对反向字符串也适用)。

最佳答案

据我所知,大多数针对特定架构的 strcmp 优化都使用将多个字节比较在一起的技巧,例如转换为具有对齐指针的 long 等。这些优化不太可能用于比较字符串的反向,即反向不会形成相同的例如长并再次反转它以生成相同的数字将导致效率损失。所以我认为答案是否定的。

关于c - 用于反向字符串的高效且便携的 strcmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12563807/

相关文章:

c - 简单c任务的问题

python从c_char列表中生成字符串

c - Valgrind 无效写入大小 8

c - 如何调试可能的堆损坏?

java - JSF Richfaces 前端性能调优

performance - 比较软件实现的性能

c++ - 作为微优化,是否值得用 C 而不是 C++ 编写部分代码?

我可以得到一些关于我用 C 实现的 strcmp() 函数的反馈吗?

c - strcmp 不工作,在第二次循环迭代中找到它

c 读取字符串导致崩溃