По идее, современные процы должны детектить обратное чтение и врубать prefetch.
Ипать, тудыж твою налево.
Компиляторы под штеуд преобразуют прямое/обратное чтение в таких циклах как бы не со времён BC 5.0 / VC 5.0, если не раньше. Потому как на 486 обратное чтение было чуть быстрей.
А вообще - печально, конечно, когда идеоматическую реализацию детерминированного конечного автомата (напишу ведь ДКА - хрен кто поймёт) называют «говнокодом» и «простыней».
В общем-то, это, пожалуй, единственный факт, который действительно необходимо знать про икспертное сообщество ЛОРа по состоянию на начало 2016 г.