Или это так? Разработчики Facebook только что описали проект, направленный на оптимизацию байтового кода Java. Пост впечатляет. но создается впечатление, что он открывает новые горизонты — это не так.
Вы склонны думать, что оптимизация, такая как минимизация, относится только к интерпретируемым языкам, таким как JavaScript, и совсем не подходит для скомпилированного кода, такого как байтовый код. Это, однако, игнорирует тот факт, что байтовый код не так низкоуровневый, как вы могли бы подумать. Байтовый код включает в себя имена переменных и других символов, а также полные пути к тому, где хранятся вещи. В конце концов, байтовый код предназначен для интерпретации JVM и как таковой содержит много информации, которая отсутствовала бы в программе машинного кода, сведенной к машинным операциям и адресам.
Facebook реализовал оптимизатор, который работает непосредственно с кодом DEX, предназначенным для интерпретатора Android Dalvik.
Он выполняет ряд этапов оптимизации, включая:
Минимизация и сжатие
Он заменяет читаемые человеком строки в байтовом коде небольшими уникальными сгенерированными идентификаторами.
встраивание
Если функция вызывает другую функцию, то более эффективно преобразовать вызов во встроенный код, поместив код вызываемой функции в вызывающую функцию.
Удаление неиспользуемых функций оболочки
Удалите функции set/get, которые не используются.
Мертвый код elmimination
Пройдитесь по графику функций и удалите любой недостижимый код.