これらの種類の if 条件を記述するより効率的な方法を探しています。
a = huge_term >= b ? huge_term : c
また
(a = huge_term) >= b ? a : a = c
2 番目のものはかなり短いですが、変数a
は 3 回表示されます。結果を変数に格納する必要があります。どのように書きますか?
これらの種類の if 条件を記述するより効率的な方法を探しています。
a = huge_term >= b ? huge_term : c
また
(a = huge_term) >= b ? a : a = c
2 番目のものはかなり短いですが、変数a
は 3 回表示されます。結果を変数に格納する必要があります。どのように書きますか?
大きな式よりも、変数が複数回出現する方が確実に優れています。
どちらにしても効率に違いはないかもしれませんが、プログラム構成の観点からは、大きなコード ブロックを繰り返さないほうがよいでしょう。
huge_term
コンパイラが 2 つの評価間で値が変わらない共通部分式として認識できるものである場合、CSE (共通部分式の削除) によって削除できます。しかし、コンパイラがそれを減らすことができるからといって、それがメンテナンスの頭痛の種ではないというわけではありません。
変数が何回出現するかは、特に大きな式の繰り返しを減らすのに役立つ場合は、ほとんど気にする必要はありません。つまり、変数が I/O ポートのような揮発性メモリの場所でない限りです。への割り当てa
が外部から見える効果である場合、2 つのバージョンのセマンティクスは同じではありません。