1

小さなJavaWebアプリケーションを作成しています。ここでは、実行するコントローラーのメソッドをアクションごとに指定するルートファイルを定義しています。

これを行うために、このルートファイルを解析し、メインのサーブレットで、受信した呼び出しに基づいて、必要なメソッドを呼び出すためにリフレクションを使用します。

ただし、Javaリフレクションにより、パフォーマンスのオーバーヘッドが発生します(JVMなどに基づく)。

したがって、これが正しい手順であるかどうか、またはそのようなタスクを実行するための別の代替手段があるかどうかを尋ねたいと思います。

よろしくお願いします!

4

2 に答える 2

4

この場合、リフレクションによるメソッド呼び出しのパフォーマンス オーバーヘッドは無視できます。リフレクション メソッドの呼び出しには 0.1 マイクロ秒程度かかると見積もっていますが、クライアントとサーバーの間のネットワーク遅延はわずか 10 ミリ秒です。つまり、応答時間の 0.001% 未満がリフレクション オーバーヘッドによるものです。

重要なメッセージ: 何かが「遅い」と言われたら、常に「何と比較して」と尋ね、パフォーマンスを最適化する前に、測定可能なパフォーマンスへの影響が考えられるかどうかを評価してみてください。(実際に解決すべきパフォーマンスの問題がある場合は、プログラムのどの部分が遅いかを測定し、それらを最適化してから、再度測定してください)。

于 2012-08-26T20:55:34.493 に答える
0

リフレクションは、迅速な開発/テストサイクルで、動的にルーティングを行い、開発者に適切なフィードバックを提供する1つの方法のようです。

オーバーヘッドを取り除く代わりに、routesファイルからJavaコードを生成する「コンパイル」ステップがあることを想像することができます。しかし、個人的にはお勧めしません。

いずれにせよ、パフォーマンスが問題であると規定することは、それを測定していなければ時期尚早のようです。

于 2012-08-26T20:15:13.277 に答える