Не действительно . Ваша типичная 1-байтовая инструкция сравнения занимает 1 цикл.
Лучше всего было бы использовать инструкции сравнения 64-битных MMX (см. на этой странице для примера) . Однако те работают с регистрами, которые должны быть загружены из памяти. Загрузка памяти значительно повредит вашему времени, потому что вы в лучшем случае будете выходить в кэш L1, что добавляет 10-кратное замедление *. Если вы выполняете какую-то тяжелую обработку строк, вы, вероятно, сможете добиться некоторого изящного ускорения, но опять же, это будет больно.
Другие люди предлагают предварительно вычислять строки. Может быть, это будет работать для вашего конкретного приложения, а может и нет. У вас есть для сравнения строк? Вы можете сравнить цифры?
Ваша редакция предлагает сравнивать указатели. Это опасная ситуация, если вы не гарантируете, что не будете сравнивать подстроки (т. Е. Сравниваете две строки байтов: [0x40, 0x50] с [0x40, 0x42]. Это не «равно», а указатель сравнения скажет что они есть).
Вы смотрели на источник gcc strcmp ()? Я бы предположил, что это было бы идеальной отправной точкой.
* Грубо говоря, если цикл занимает 1 единицу, удар L1 - 10 единиц, удар L2 - 100 единиц, а фактическое попадание в ОЗУ занимает очень долго .