Мне только что пришло в голову, что одна из использованных нами оптимизаций кода ProGuard, а именно слияние иерархий классов, возможно, вообще не лучший выбор.
Моя догадка заключалась в том, что было бы полезно объединить классы, чтобы сократить количество вызовов ClassLoader, который, по крайней мере, на JVM является особенно медленной операцией, и в нашем коде мы выбрали множество меньших (часто внутренних) классов, а не большие классы объектов Бога, поэтому ClassLoader будет запускаться относительно часто.
Однако, учитывая крайний (вероятно маловероятный) случай, когда все классы будут объединены в один, даже если загрузчик будет вызван только один раз, мы в конечном итоге загрузим в память тонны кода, который, скорее всего, никогда не будет использован ( Думаю, здесь тоже действует правило 80/20).
Это заставляет меня задуматься:
1) Насколько быстро загружается класс в Dalvik? Стоит ли вообще сокращать эту операцию, используя слияние классов?
2) Тем не менее, вы бы рекомендовали вообще использовать слияние классов на Android?