[解決済み] Javaにおけるif/else文とswitch文の相対的な性能差は何ですか?
質問
Webアプリケーションのパフォーマンスが心配で、"if/else" と switch 文のどちらがパフォーマンスに関して優れているのでしょうか?
どのように解決するのですか?
それはミクロの最適化、早すぎる最適化であり、悪である。むしろ、問題のコードの可読性と保守性を心配することです。もし、2つ以上の
if/else
ブロックが2つ以上ある場合や、そのサイズが予測できない場合は、そのブロックに
switch
ステートメントを考慮する必要があります。
あるいは ポリモーフィズム . まず、何らかのインターフェースを作成します。
public interface Action {
void execute(String input);
}
そして、すべての実装をいくつかの
Map
. これは静的にも動的にも行えます。
Map<String, Action> actions = new HashMap<String, Action>();
最後に
if/else
または
switch
のようなものです(nullpointersのような些細なチェックは別として)。
actions.get(name).execute(input);
それは
かもしれない
よりも微小である。
if/else
または
switch
といった具合ですが、少なくともコードの保守性ははるかに優れています。
ウェブアプリケーションについて話しているのですから、あなたは
HttpServletRequest#getPathInfo()
をアクションキーとして使用することができます(最終的には、アクションが見つかるまでループでpathinfoの最後の部分を分割するためにいくつかのより多くのコードを記述します)。同じような回答はこちらで見つけることができます。
もしあなたが、Java EE ウェブアプリケーションのパフォーマンス全般について心配しているのであれば、あなたは この記事 も役に立つでしょう。を与える他の領域があります。 よりも パフォーマンスを向上させます。
関連
-
java 例外。Javaツールの初期化
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] カスタムオブジェクトのArrayListをプロパティでソートする
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] Javaにおける "final class "の意味とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Spring Boot による HTTPS アクセスの設定
-
final, finally, finalizeの違いについて話してください。
-
をインスタンス化することができません。
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
[解決済み] Stringでswitch文が使えないのはなぜですか?