Оптимизация компилятора: байт-код Java

В настоящее время я пишу компилятор игрушек, ориентированный на байт-код Java в переводе.

Я хотел бы знать, есть ли какой-то каталог, а может быть резюме, различных простых оптимизаций в виде глазок, которые могут быть сделаны в испускаемом байт-коде перед написанием файла .class. Я действительно знаю некоторые библиотеки, которые имеют эту функциональность, но я хотел бы реализовать это сам.

Ответы

Ответ 1

Вам известно о Proguard? http://proguard.sourceforge.net/

Это отличный оптимизатор байт-кода, который реализует множество оптимизаций. См. FAQ для списка: http://proguard.sourceforge.net/FAQ.html

  • Вычислить постоянные выражения.
  • Удалите ненужные запросы и методы доступа к полю вызовы.
  • Удалите ненужные ветки.
  • Удалите ненужные сравнения и Примеры тестов.
  • Удалить неиспользуемый код блоки.
  • Объединить идентичные кодовые блоки.
  • Уменьшить распределение переменных.
  • Удалить поля только для записи и неиспользуемый метод параметры.
  • Внутренние постоянные поля, параметры метода и возвращаемые значения.
  • Встроенные методы, которые являются короткими или единственными один раз.
  • Упростить хвостовую рекурсию звонки.
  • Объединить классы и интерфейсы.
  • Сделать методы приватными, статичными и если возможно.
  • Сделать классы статические и окончательные, когда это возможно.
  • Заменить интерфейсы, которые имеют один Реализации.
  • Выполните более 200 оптимизация глазок, например заменяя... * 2 на... < 1.
  • Необязательно удалить код регистрации.

Я уверен, что вы можете дополнительно изучить исходный код, чтобы понять, как они реализованы.