0

一般的に、より良い/より速いですか?

if (condition) return a
else if (condition2) return b
else return c

また

if (condition) return a
if (condition2) return b
return c

どちらも同じことをしますが、これら2つのスニペットを比較するときに、覚えておく必要のある他の影響があるかどうか知りたいです。

4

6 に答える 6

3

実行されるコードの量は常に同じであるため、違いはありません。コードの読みやすさの観点から、「else」バージョンを使用することを強くお勧めします。このバージョンでは、else ifブランチを実行するために、最初の条件が真ではないことが直接わかります(「else」のため)。2番目の例では、読み取り時に「戻り値」を見逃し、コードがいくつかの条件をチェックする理由を混乱させる可能性があります。

于 2012-06-18T18:26:12.460 に答える
1

違いはごくわずか/なしです。

コードのパフォーマンスを調整するときは、正直に言うと他の場所を探します。

于 2012-06-18T18:24:33.693 に答える
1

最も読みやすく、保守しやすいものを使用してください。コンパイラは通常、この種のブランチの最適化を行うのが得意であるため、2つのバージョンのコードの間に違いは見られない可能性があります。したがって、結果としてコンパイルされるコードは、どちらの場合も本質的に同じである可能性があります。コンパイラがこの種のマイクロ最適化を行うのは任せてください。

于 2012-06-18T18:35:23.993 に答える
0

正直なところ、テストしてみましたが、まったく違いはありませんでした。

私はそれが他の何よりも個人的な好みだと思います、そして2番目のものは書くべきコードが少ないです...

于 2012-06-18T18:19:23.023 に答える
0

この場合、違いはありませんが、次の例は異なります。

    if (condition) do work1
    else if (cond2) do work2
    else if (cond3) do work3
    else do work4
    more work

最初の条件が真の場合、プログラムは「more work」ステートメントに移動し、他の条件はテストされませんが、次の場合、最初の条件が真であっても(他の条件を除く)、すべての条件がテストされます。

    if (condition) do work1
    if (cond2) do work2
    if (cond3) do work3
    else work4

    more work

これが唯一の違いであり、何千ものifステートメントがない限り、速度にはあまり影響しません。

どちらもユースケースが異なります。

Run first one where you want to stop as soon as a true condition is encountered.

Run second one when you want to test more conditions even after you have found
a true condition.
于 2012-06-18T18:24:31.150 に答える
-1

ELSE IFの意味は、前のIFステートメントが真でない場合は、「これ」を試してください。私の経験から、IFははるかに高速に動作し、1つの条件をチェックするだけでよい場合に最適です。ELSE IFは、さまざまな条件に最適です。

于 2012-06-18T18:34:36.987 に答える