【发布时间】:2012-09-24 11:10:39
【问题描述】:
strcmp,至少使用 g++,对许多架构进行了许多优化。在我的电脑 Core2Duo E8400 中,strcmp 比使用直接实现要快两倍。
我的问题是否存在一些提供比较两个“反向字符串”的函数的库。反向字符串char *s1 以s1 开始,以s1-n 结束,这样s1-n == '\0'(其中n >= 0 和所有0 <= n' < n, s1-n' != '\0')。
当然,要求是这个函数必须像strcmp一样高效便携。
编辑:我只需要知道两个字符串是否相等(所以我不需要知道哪个更大。原则上,相同的 strcmp 优化适用于反向字符串)。
【问题讨论】:
-
我愿意打赌答案是否定的。以零结尾的字符串很常见。以
\0开始的字符串几乎闻所未闻。那么,谁为这些不寻常的事情编写了一个库? -
这是我见过的最奇怪的要求之一! :)
-
我确信可以做到,但似乎找不到这样的实现。祝你好运。
-
为什么不能使用
strcmp()的现有源代码并减少两个输入指针,而不是增加? fossies.org/dox/glibc-2.16.0/strcmp_8c_source.html -
@user1476999:哦,当然不是。但是您仍然可以使用
\0LAST 存储这些字符串。 IE。X-xiferp\0, Y-xiferp\0等。然后你可以使用常规的strcmp。
标签: c performance strcmp