在Android/Dalvik上推荐使用ProGuard合并课程吗?

Mat*_*ias 4 android proguard

我刚刚想到,我们使用的ProGuard代码优化之一,即合并类层次结构,可能根本不是一个好的选择.

我的直觉是,这将是有益的,以便减少对ClassLoader中,这至少在JVM是一种特别缓慢的操作的调用合并类,并在我们的代码中,我们选择了很多较小的(通常内部)类,而不是大型God对象类,因此ClassLoader将相对经常运行.

但是,考虑到极端(可能不太可能)将所有类合并为单个类的情况,那么即使加载器只被调用一次,我们最终会将大量代码加载到很可能永远不会被使用的内存中( 80/20规则也适用于此处,我猜).

这让我想知道:

1)Dalvik的课程加载速度有多快?这是一项值得通过使用类合并来减少的操作吗?

2)那就是说,你会建议在Android上使用类合并吗?

Eri*_*une 5

当不必要地拆分类时,垂直类合并会将类/接口与其扩展/实现进行折叠.这应该始终是一种改进(规模和性能).

对于横向类合并,我无法提供一般答案.代码库将更小,但可以想象一些代码很快就会加载,或者在极端情况下不必要地加载.