我突然想到,我们使用的 ProGuard 代码优化之一,即合并类层次结构,可能根本不是一个好的选择。
我的预感是,合并类以减少 ClassLoader 的调用是有益的,这至少在 JVM 上是一个特别慢的操作,并且在我们的代码中,我们选择了许多较小的(通常是内部的)类,而不是大的神对象类,所以ClassLoader会运行得比较频繁。
然而,考虑到极端(可能不太可能)的情况,即所有类都将合并为一个类,那么即使加载器只会被调用一次,我们最终也会将大量代码加载到内存中,而这些代码很可能永远不会被使用(我猜 80/20 规则也适用于此)。
这让我想知道:
1)Dalvik 中的类加载实际上有多快?这是一个值得通过使用类合并来减少的操作吗?
2) 也就是说,您会建议在 Android 上使用类合并吗?
当类/接口被不必要地分割时,垂直类合并会折叠类/接口及其扩展/实现。这应该始终是一种改进(尺寸和性能)。
对于水平类合并,我无法提供一般性答案。代码库会更小,但可以想象,某些代码可能会很快加载,或者在极端情况下,加载是不必要的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)