R8 Optimization: Class Constant Operations
Продолжение серии статей о оптимизация кода, которые реализованы в R8 от Jake Wharton. В новой статье рассказывается о оптимизации констант классов.
Рассмотрим частый пример классов в константах:
private static final String TAG = "MyClass";// orprivate static final String TAG = MyClass.class.getSimpleName();Такие константы очень часто используются для логирования. Если рассмотреть после компиляции кода, то
MyClass.class.getSimpleName() всегда будет возвращать одно и тоже значение - "MyClass". Фактически в оптимизированном байткоде можно делать подмену выполнения метода на простую строку. Важно понимать что это не работает для случая getClass().getSimpleName(), т.е. когда класс получается динамически.R8 получила такую оптимизацию кода и теперь неважно как вы будете создать
LOG_TAG для ваших логов 🎉Android Studio 3.4 уже на подходе и R8 становится инструментом по умолчанию для оптимизации кода в ней.