1. ホーム
  2. java

[解決済み] Javaにおけるif/else文とswitch文の相対的な性能差は何ですか?

2022-05-18 06:25:12

質問

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 ウェブアプリケーションのパフォーマンス全般について心配しているのであれば、あなたは この記事 も役に立つでしょう。を与える他の領域があります。 よりも パフォーマンスを向上させます。