'>' よりも '<=' をチェックする方がコストがかかりますか?
最初のものは < と == の両方をチェックしますが、'>' は 1 つのチェックしか行いません。
それとも、コンパイラがこれを最適化しますか?
'>' よりも '<=' をチェックする方がコストがかかりますか?
最初のものは < と == の両方をチェックしますが、'>' は 1 つのチェックしか行いません。
それとも、コンパイラがこれを最適化しますか?
何を比較するかにもよりますが、組み込み型の場合、どちらも一般的に 1 つの機械語命令にすぎません。
目立った違いはほとんどありません。この種の最適化を考えているのであれば、最適化を正しく行っていないに違いありません。
非組み込み型の場合、必要に応じて両方の演算子をオーバーロードできます。
class Foo
{
public:
bool operator<=(const Foo &other) const
{
}
bool operator<(const Foo &other) const
{
}
};
したがって、比較演算子がアプリケーションのボトルネックである場合、演算子を最適化<=
し、別の方法で計算してから呼び出し<
て計算することができます。==
No.<=
は基本的に>
NOT を追加した場合と>=
同じ<
であり、NOT を使用した場合と同じです。(あるとすれば、どれに余分な NOT があるのか わかりませんが、ハードウェアレベルでは基本的にすべて同じです。)
いいえ、どちらも同じコストです。派手なものではなく、既知の標準コンパイラを使用していると仮定します