です。

Barbara Streisand
リリース: 2024-12-18 15:35:09
オリジナル
807 人が閲覧しました

Is the '

は比較 '<' です'<=' より高速ですか?

複雑なループ コードを含む特定のシナリオでは、'<' を使用することが推奨されています。演算子は「<=」演算子よりも高速な場合があります。この主張を調査するために、これらの比較用に生成された基になるマシン コードを調べてみましょう。

コード生成

x86 アーキテクチャでは、通常、整数比較は 2 つのマシン命令を使用して実装されます。

  1. test または cmp 命令: これは、EFLAGS レジスタに、結果を示すさまざまなステータス ビットを設定します。比較。
  2. jcc (ジャンプ) 命令: これは EFLAGS をチェックし、それに応じて分岐します。

両方の '<' について「<=」比較では、最初の命令 (cmp) は同一です。違いは 2 番目の命令にあります:

  • '<': jge, 大きいか等しい場合にジャンプ
  • '<=': jg, 大きい場合にジャンプ

実行時間

実行時間はレイテンシーとスループットの両方によって決まります。 jge 命令と jg 命令の場合、レイテンシは同じ 0 サイクル、スループットは 0.5 サイクルです。これは、実行にかかる時間が同じであることを意味します。

浮動小数点比較

fucomip 命令を使用した x87 浮動小数点比較にも同じ原則が適用されます。 EFLAGS レジスタのチェックに使用される seta 命令と setae 命令も、実行に同じ時間がかかります。

結論

ほとんどのアーキテクチャでは、「<」および '<=' 演算子は、整数比較と浮動小数点比較の両方で同じ実行時間になります。 「<」という仮定「より高速になるかもしれない」は、一般的なケースでは誤りです。

以上がです。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート