2

デフォルトステートメントの配置はJavaの効率に影響しますか?違いはありますか?

switch (a) {
case 0: return 0;
case 1: default: return -1;
case 2: return 2
...
case 99: return 99;
}

vs

switch (a) {
case 0: return 0;
case 1: return -1;
case 2: return 2;
...
case 99: return 99;
default: return -1;
}
4

4 に答える 4

2

いいえ、違いはありません。なんで?このため、JVMはいつdefault本体を使用する必要があることを認識しますか?他のすべてのケースをチェックした後。したがってdefault:、パフォーマンスが変わらない特定の場所に配置します。

于 2012-12-05T20:52:08.803 に答える
2

最も単純な実装でも、これによってパフォーマンスに違いが生じることはありませんが、Javaを使用すると、実際のマシンコードからこれまでのところ離れているため、このコードや他の同様のコードを最適化しようとしないでください。else-if実際、 sの最もばかげたカスケードを作成したとしても、JITがそれを超高速のハッシュルックアップベースのマシンコードに変える可能性は十分にあります

于 2012-12-05T20:49:13.253 に答える
0

いいえ。switchステートメントの場所は、デバッグアノテーション以外に生成されたバイトコードに違いはありません。

于 2012-12-05T20:52:15.183 に答える
0

クイックテストプログラムを作成した場合、パフォーマンスが大幅に向上するとは思われません。少なくとも、コードを曖昧にすることを正当化するものはありません。コードを読みやすくするために、デフォルトのケースをリストの最後にきちんと残しておきます。パフォーマンスのわずかな改善よりもおそらく重要です(もしあれば)

于 2012-12-05T20:51:03.007 に答える