[解決済み] スイッチの大文字小文字の順序は速度に影響しますか?重複
2023-07-16 16:47:02
質問
ググってみたのですが、ダメでした。
私は非常に大きなスイッチを持っていて、いくつかのケースは 明らかにより一般的な です。
ですから、私は、順序が本当にそのまま保持され、"upper" ケースが "lower" よりも先にテストされ、したがって速く評価されるのかを知りたいのです。
私は順番を維持したいのですが、もし速度が損なわれるのであれば、枝の順番を変更するのが良いでしょう。
説明のために
switch (mark) {
case Ion.NULL:
return null;
case Ion.BOOLEAN:
return readBoolean();
case Ion.BYTE:
return readByte();
case Ion.CHAR:
return readChar();
case Ion.SHORT:
return readShort();
case Ion.INT:
return readInt();
case Ion.LONG:
return readLong();
case Ion.FLOAT:
return readFloat();
case Ion.DOUBLE:
return readDouble();
case Ion.STRING:
return readString();
case Ion.BOOLEAN_ARRAY:
return readBooleans();
case Ion.BYTE_ARRAY:
return readBytes();
case Ion.CHAR_ARRAY:
return readChars();
case Ion.SHORT_ARRAY:
return readShorts();
case Ion.INT_ARRAY:
return readInts();
case Ion.LONG_ARRAY:
return readLongs();
case Ion.FLOAT_ARRAY:
return readFloats();
case Ion.DOUBLE_ARRAY:
return readDoubles();
case Ion.STRING_ARRAY:
return readStrings();
default:
throw new CorruptedDataException("Invalid mark: " + mark);
}
どのように解決するのですか?
switch文の順番を入れ替えても効果がありません。
Javaのバイトコード仕様を見てみると
switch
にコンパイルすることができます。
lookupswitch
または
tableswitch
命令で
int
. A
lookupswitch
は常に可能な値をソートした状態でコンパイルされるので、 コード中で定数を並べ替えても問題ありません。
tableswitch
は指定されたオフセットに対して可能なジャンプの配列を持っているだけなので、これも元の順序を気にすることはありません。
参照 http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.lookupswitch および http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.tableswitch をご覧ください。
関連
-
Java:未解決コンパイル問題の解決方法
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み] switch文の中で変数を宣言してはいけないのはなぜですか?
-
[解決済み] Stringでswitch文が使えないのはなぜですか?
-
[解決済み] JavaScriptで複数ケースを扱うSwitch文
-
[解決済み] switch文の複数ケース
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
Javaでよくある構文エラー
-
-bash: java: コマンドが見つからない 解決方法
-
API の戻り値を処理するために ResponseEntity を使用する
-
Java基礎編 - オブジェクト指向
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
アクセス制限の解決方法: ---- in Java
-
[解決済み】連続したintに対するJavaのswitchは、ケースを追加することでより速く実行されるように見えるのはなぜですか?