strcmp, по крайней мере, с использованием g++, имеет множество оптимизаций для многих архитектур. На моем компьютере Core2Duo E8400 strcmp в два раза быстрее, чем использование прямой реализации.
Мой вопрос, существует ли какая-то библиотека, которая предоставляет функцию, которая сравнивает две «обратные строки». Обратная строка char *s1
начинается в s1
и заканчивается в некотором s1-n
таком, что s1-n == '\0'
(где n >= 0
и для всех 0 <= n' < n, s1-n' != '\0'
).
Конечно, требования заключаются в том, что эта функция должна быть такой же эффективной и переносимой, как strcmp.
редактировать: мне просто нужно знать, равны ли две строки (поэтому мне не нужно знать, какие из них больше. Тогда те же оптимизации для strcmp, в принципе, будут отлично работать для обратных строк).
\0
, практически не встречаются. Итак, кто пишет библиотеку для таких необычных вещей? - person MSalters   schedule 24.09.2012strcmp()
и уменьшить два указателя ввода вместо увеличения? fossies.org/dox/glibc-2.16.0/strcmp_8c_source.html - person Alex Reynolds   schedule 24.09.2012\0
LAST. т.е.X-xiferp\0, Y-xiferp\0
и т.д. И тогда можно использовать обычныйstrcmp
. - person MSalters   schedule 24.09.2012memcmp
. Компилятор может лучше справиться с автоматической векторизацией, чем ваш обратныйstrcmp
(я предполагаю, что он не удался на вашем обратном-strcmp). - person Steve Jessop   schedule 24.09.2012