- - PR -
三項演算子について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2001-12-12 19:41
パワーエサと申します。
同じ機能をif文で記述した場合と 三項演算を用いて記述した場合を比較すると、 両者のパフォーマンスに違いはあるのでしょうか? 例えばcの値にa,bのうち値の小さい方を代入したいような場合、 @とAのどちらで記述するべきでしょうか? @if文 if(a<=b){ c = a; }else{ c = b; } A三項演算 c = (a<=b) ? a : b ; | ||||
|
投稿日時: 2001-12-12 23:54
JavaはC/C++とは違ってif文は評価できません。
Aは評価結果が欲しいときに使われます。 使い分けは、プログラムが読みやすいかどうかという観点でどちらが適切かという判断をおこなうのが一般的だと思います。私はリターン文やメソッド引数としてスッキリ書ける場合にAを使うことが多いです。 [ メッセージ編集済み 編集者: miki 編集日時 2001-12-13 09:18 ] | ||||
|
投稿日時: 2001-12-13 13:15
コンパイル時最適化にも、実行時最適化にも影響するので、一概にはいえないでしょう。
参考ながら、
を javap -c でディスアセンブルした時の該当する部分は 前者: 14 iload_1 15 iload_2 16 if_icmplt 24 19 iload_1 20 istore_3 21 goto 26 24 iload_2 25 istore_3 後者: 34 iload_1 35 iload_2 36 if_icmplt 43 39 iload_1 40 goto_44 43 iload_2 44 istore_3 というわけで、後者のほうが 20 と 25 が 44 にまとまっている、程度ですね。 少なくともこの例では、性能差が出るとは思えません。 (IBM-JDK 1.3) | ||||
1
