Ну как вариант, сразу приходит в голову использовать битовые маски и SIMD-овыми операциями искать вхождения. Причем битовая маска подготовлена со сдвигом искомой строки, ну типа:
0: cde
1: cde
2: cde
3: cde
4: cde
...
И такую штуку прикладываем, проверяя за раз N символов, потом смещаемся на N и ищем вхождение во втором куске. Для AVX512 N будет 512, что теоретически ускорит +- в 500 раз.
Вот похожее решение + еще несколько описаны тут
http://0x80.pl/notesen/2016-11-28-simd-strfind.html