Сверхулучшение

Mar 30, 2022 23:39

https://en.wikipedia.org/wiki/Superoptimization

Автор названия и первой реализации мощна.

Там есть идея, что сверхулучшение (супероптимизация) может быть использована для создания локальных оптимизаторов общего назначения - peephole optimizer это оптимизатор, что смотрит в некоторое небольшое окно инструкций.

Сейчас я несколько не в форме, чтобы полностью это оценить, однако мысль довольно интересная.

Код работы со стеком без дополнительных регистров имеет, приблизительно, свойство нормальности - наикратчайшие последовательности команд, имеющих один и тот же эффект, будут либо перечислимы, либо вовсе уникальны. Команды работы со стеком могут быть "сжаты" в стиле алгоритма Невилла-Маннинга (sequitur) - последовательности команд могут быть заменены на "слова" (в терминологии Форта) с подстановкой сжатых определений (ссылок на слова) в места использования.

Такое "сжатие" позволяет приблизить произвольно далеко отстоящие команды для локального оптимизатора.

Форт, оптимизация

Previous post Next post
Up