4

私たちが使用した ProGuard コードの最適化の 1 つ、つまりクラス階層のマージは、おそらくまったく良い選択ではないかもしれないと思いました。

私の直感では、ClassLoader の呼び出しを削減するためにクラスをマージすることが有益であるということでした。これは、少なくとも JVM では特に処理が遅くなります。大規模な God オブジェクト クラスであるため、ClassLoader は比較的頻繁に実行されます。

ただし、すべてのクラスが 1 つのクラスにマージされるという極端な (おそらくありそうにない) ケースを考えると、たとえローダーが 1 回しか呼び出されなくても、大量のコードをメモリにロードすることになり、それらはまったく使用されない可能性が非常に高くなります (ここでも 80/20 ルールが適用されると思います)。

それは私に不思議に思う:

1) 実際、Dalvik でのクラスの読み込み速度はどれくらいですか? クラスマージを使用して削減する価値のある操作ですか?

2) そうは言っても、Android でクラス マージを使用することをお勧めしますか?

4

1 に答える 1

5

垂直方向のクラス マージは、不要に分割された場合に、クラス/インターフェイスとその拡張機能/実装を折りたたみます。それは常に改善されるはずです(サイズとパフォーマンス)。

水平クラスのマージについては、一般的な回答を提供できません。コードベースは小さくなりますが、一部のコードはすぐに、または極端に不必要に読み込まれる可能性があります。

于 2012-07-04T14:09:13.857 に答える