は < <=?
比較演算子 < を使用した一般的な if ステートメントよりも高速です。または <= の場合、< とみなされる場合があります。単一のステップまたはバウンドがあるため、より高速になります。しかし、この仮定は正しくありません。パフォーマンスへの影響は無視できます。
マシン コード生成
x86 を含むほとんどのアーキテクチャでは、整数比較では次のマシン命令が使用されます。
ジャンプ命令には、jne (等しくない場合にジャンプ)、jz (ゼロの場合にジャンプ)、jg (大きい場合にジャンプ) などが含まれます。
コード例
次のことを考えてください。例:
if (a < b) { // Do something 1 }
と
if (a <= b) { // Do something 2 }
コンパイラによって生成されたアセンブリ コードを比較すると、使用されるジャンプ命令 (jge と jg) に違いがあることがわかります。
if (a < b) mov eax, [a] cmp eax, [b] jge .L2 // Do something 1 if (a <= b) mov eax, [a] cmp eax, [b] jg .L5 // Do something 2
したがって、マシンコードの唯一の違いはジャンプ命令であり、比較自体に同じ量の処理が必要であることを示しています。 time.
浮動小数点
同じ原則が x87 浮動小数点比較にも適用されます。コンパイラは、両方の < に対して同じ数の命令を生成します。
結論
演算子の数の違い (< と <=) にもかかわらず、整数比較のパフォーマンスの差はわずかです。ほとんどのアーキテクチャで。使用されるジャンプ命令 (jge と jg) の実行には同じ時間がかかります。浮動小数点比較にも同じことが当てはまります。
以上が`ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。