-3

これは私が考えていたもので、Googleで検索しても答えが見つかりませんでした(キーワードがわからないのかもしれません)。好奇心レベルで、どのプロジェクトにも実装されていません。

どちらが速いですか:

if (bool)
   return true;
else
   return false;

また

bool ? true : false;
  • それらは等しいですか?

  • なんで?

  • すべての言語、すべてのシステムで、あるものは別のものより速いですか?

(誰かがマイクロコントローラ、iOSまたはJava用のObj-Cの答えを知っているなら、私の質問に対するあなたの答えを本当に感謝します)

編集:bool ? true : false「キーワードがわからない」と言ったので、それが三項と呼ばれることを知りませんでした。

4

8 に答える 8

1

Java では、少なくとも、最初のケースで行ごとにデバッグする機能以外に違いはありません。コンパイルされたバイトコードは、ほとんどの場合、両方のケースでまったく同じです。あなたが尋ねているすべての環境で同じことが当てはまると思います。

于 2013-06-30T15:20:08.953 に答える
1

速度の違いはマシン コード レベルで発生し、そのレベルでは、どのイディオムがコンパイルされているかを推測することさえできません。したがって、あなたの答えは次のとおりです。イディオムの選択とパフォーマンスの間に相関関係はありません。ほとんどの場合、まったく同じはずですが、そうでない場合、一般的に適用できる説明はありません。

于 2013-06-30T15:24:32.263 に答える
1

通常より速いのは

return bool;

これにより、条件によって発生する可能性のある分岐が回避され、コストのかかる分岐ミスのある CPU でより高速になります。いずれにせよ、最適化コンパイラはブランチを削除する可能性がありますが、これは言語に依存しないため、保証できません。

于 2013-06-30T15:21:22.473 に答える
0

Ternaryとの両方のパフォーマンスif-elseは同じです。

三項演算子は省略形です。これらは同等の if-else ステートメントにコンパイルされます。

于 2013-06-30T15:23:44.917 に答える
0

それらは等しいですか?

論理的にはい。ここでも同じことを行います。2 つ目は、三項演算子と呼ばれます。

すべての言語、すべてのシステムで、あるものは別のものより速いですか?

Java では違いはありません。他の言語でもパフォーマンスがあるかどうかは疑問です。仮にそうだとしても、その差はごくわずかだと思います。より読みやすいコードに集中した方がよいでしょう。最初のものは間違いなく読みやすいです。

于 2013-06-30T15:24:28.583 に答える