ホームページ > Java > &#&チュートリアル > リフレクションは Java のパフォーマンスにどの程度影響しますか?

リフレクションは Java のパフォーマンスにどの程度影響しますか?

Patricia Arquette
リリース: 2024-12-05 04:19:14
オリジナル
425 人が閲覧しました

How Much Does Reflection Impact Java Performance?

リフレクションは Java のパフォーマンスに影響しますか?

クラス コンストラクターを直接呼び出すのではなく、リフレクションを使用してオブジェクトを作成すると、間違いなく重大なパフォーマンス ペナルティが発生します。リフレクション操作には動的な型解決が必要であり、Java 仮想マシンの最適化が妨げられます。

リフレクションに関する Java のドキュメントでは、このパフォーマンスの違いを認めています。「リフレクションには動的に解決される型が含まれるため、特定の Java 仮想マシンの最適化は実行できません...reflective操作のパフォーマンスは、反射しない操作よりも遅くなります。"

簡単なテストで明らかなことがわかります。差:

public class Main {

    public static void main(String[] args) throws Exception {
        doRegular();
        doReflection();
    }

    public static void doRegular() throws Exception {
        long start = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++) {
            A a = new A();
            a.doSomething();
        }
        System.out.println(System.currentTimeMillis() - start);
    }

    public static void doReflection() throws Exception {
        long start = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++) {
            A a = (A) Class.forName("misc.A").newInstance();
            a.doSomething();
        }
        System.out.println(System.currentTimeMillis() - start);
    }
}
ログイン後にコピー

結果:

  • 反射なし: 35ms
  • 反射あり: 465ms

このテストにはルックアップとインスタンス化の両方が含まれますが、インスタンス化の結果の分離も含まれることに注意してください。ペナルティ:

  • リフレクションなし: 30 ミリ秒
  • リフレクションあり (1 回の検索、インスタンス化のみ): 47 ミリ秒

したがって、パフォーマンスが低下する可能性がありますが、特定のコンテキストによって異なりますが、リフレクションを使用する場合も重要な意味を持ちます。

以上がリフレクションは Java のパフォーマンスにどの程度影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート