#optimization #language-agnostic #compiler-construction
#оптимизация #не зависит от языка #компилятор-конструкция
Вопрос:
Что может сделать компилятор для оптимизации, если он знает количество отключений цикла цикла? Развертывание цикла — это одно.Каковы другие?
Ответ №1:
- Предотвращение проверки пропуска цикла при входе в цикл (многие современные языки позволяют циклам иметь нулевые итерации, но вы должны проверять при входе)
- Улучшенная симуляция (разделение итераций цикла на куски, обрабатываемые небольшими векторами)
- Удаление проверки диапазона нижних индексов (или диагностика ошибки) (для тех языков, которые настаивают)
Комментарии:
1. Если известен диапазон индексной переменной, то известен и диапазон индексного выражения. Например, если 0<i<4 и x[3*i 6] является нижним индексом, то 6<=3*i 6<=30. Таким образом, если x имеет размерность больше 30, индекс вне диапазона не может возникнуть, и вам не нужно проверять. (C просто не проверяет, и вы получаете мусор, если значение индекса слишком велико).