4

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

我的预感是合并类以减少对 ClassLoader 的调用是有益的,这至少在 JVM 上是一个特别慢的操作,并且在我们的代码中,我们选择了许多更小的(通常是内部的)类而不是大神对象类,所以ClassLoader会比较频繁地运行。

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

这让我想知道:

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

2)也就是说,你会推荐在Android上使用类合并吗?

4

1 回答 1

5

当不必要地拆分类/接口及其扩展/实现时,垂直类合并会折叠这些类/接口。这应该始终是一种改进(尺寸和性能)。

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

于 2012-07-04T14:09:13.857 回答