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

时间:2012-07-04 12:58:57

标签: android proguard

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

我的预感是合并类以减少ClassLoader的调用是有益的,至少在JVM上是一个特别慢的操作,在我们的代码中我们选择了更小的(通常是内部的)类而不是大的God对象类,因此ClassLoader将相对经常运行。

然而,考虑到极端(可能不太可能)将所有类合并为一个类的情况,那么即使加载器只被调用一次,我们最终会将大量代码加载到内存中很可能是从未使用过(我猜这里也适用80/20规则)。

这让我感到疑惑:

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

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

1 个答案:

答案 0 :(得分:5)

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

对于横向类合并,我无法提供一般答案。代码库将会更小,但有些代码可能会很快被加载,或者极其不必要地加载。