ブール式の場合、 ">"と "<"は "> ="と "< ="より効率的ですか?後者の表現は同時に2つの条件 "="と "<"または "="と ">"をテストする必要があるからですか?比較>>>効率
比較>>>効率
答えて
いいえいいえ、ほとんどのマシンで効率に違いはありません。最新のCPU命令セットには、正確に同数のクロックサイクルで 'と等しい'というネイティブテストが含まれています。 JVMは比較を正しい命令に変換し、パフォーマンスは同等になります。
例えば、Intelチップの場合はhttps://en.wikipedia.org/wiki/X86_instruction_listings「ジャンプif」の説明を参照してください。各命令のレイテンシとスループットについては、http://www.agner.org/optimize/instruction_tables.pdfを参照してください。 Jccはすべて同じことを実行することがわかります。
はこのことを確認するために、私は次のコードを実行しました:long t1 = System.currentTimeMillis();
long t = 0;
for (long i = 0; i < 1E10; i++)
t++;
long t2 = System.currentTimeMillis();
for (long i = 1; i <= 1E10; i++)
t++;
System.out.println((t2 - t1) + "/" + (System.currentTimeMillis() - t2));
結果は12701/12731.性能においてので有意差はなかったです。
これらの演算子の間にパフォーマンスの違いがあるのは間違いありません。
Java Bytecode命令セットは、それぞれ、より小さい演算子とより小さい演算子、またはより小さい演算子(iflt
とifle
)を持っています。それ以上の比較演算子(ifgt
およびifge
)にも同様の演算子があります。最終的には、これらのバイトコードがより低いレベルでどのように解釈されるかを判断するのはJVMの実装に依存しますが、今日のほぼすべての物理アーキテクチャがこの機能を一定に提供するので、これらの操作は一定時間内に起こるという安全な前提です時間。
O(n)
(効率)の点で同じですが、if(a > b || a == b)
はif(a >= b)
と同じです。唯一の違いは、コンピュータがいくつかの文字をより多く読むがコード効率は良いということですO(n+n)
は実際には何も変更しません。 O(n^n)
などがある場合は重要です...
複雑な理論は、2つの競合するアルゴリズムの理論的効率を分析するのに優れています。アルゴリズムを実装するために使用される実際のコードのパフォーマンスをチューニングするのにはあまり役に立ちません。これを行うには、実際の物理ハードウェア上にプロファイルコードが必要です。 – sprinter
- 1. を比較するIEnumerable <T>をIEnumerable <IEnumerable <T>>効率的に
- 2. 差異<span></span>対CSSの比較<span/>?
- 3. std :: functionの比較<>
- 4. 比較リスト<String[]>
- 5. >上の比較と<
- 6. C#HashSet <T>(ObservableCollectionと比較して)<T>?
- 7. LinqToEntityクエリでEntityCollection <Class>を比較
- 8. VS2010データ - >スキーマ比較重複ファイル
- 9. C#の比較リスト<T>
- 10. Tと< T >をobserver_ptr比較*
- 11. メモリ効率の良いマップ<pair <int,int>、set <int>>代替
- 12. IF->返す対IF->他の効率
- 13. ブランドをロードする - >カテゴリー - >製品hiearchy効率的
- 14. 脂肪ドメインモデル=>非効率ですか?
- 15. CollectionAssert.AreEqualは私が <pre><code>CollectionAssert.AreEqual(ListExpected, ListActual); </code></pre> <p></p>を使用して2つのリストを比較する
- 16. MySQLでは、より効率的です:IFNULLまたはNULLIF?</p> <pre><code>IFNULL(column_name, 'test') = 'test' </code></pre> <p>または</p> <pre><code>NULLIF(column_name, 'test') IS NULL </code></pre> <p>、より効率的である1:
- 17. ハスケルの空リストをチェックする:(長さリスト== 0)または(リスト== [])がより効率的ですか?より効率的にこれらの二つの論理テストの</p> <ol> <li><code>length list == 0</code></li> <li><code>list == []</code></li> </ol> <p>:
- 18. &vs *と| <em>ブール</em>配列の比較を行う場合VS +
- 19. C++ 11 <strong>デフォルトコンストラクタ</strong>、<strong>コピーコンストラクタ</strong>と内蔵を格納<code>std::array</code>よう<strong>集約</strong>タイプのために相互に比較</strong><strong>移動コンストラクタの速度をどのように集計&コンストラクタ速度比較
- 20. Firebaseのキーを比較するには?</p> <pre><code>SOMETHING USERID (<- unique) TIMESTAMP (<- unique within USERID) SOMETHING: 'something', SOMETHING: 'something' </code></pre> <p>がどのように私は私のコード内の別の<code>ID</code>に<code>USERID</code>を比較することができます:
- 21. > =>日付変数を比較するためには=>働いていますか?
- 22. PHPの効率的な比較方法
- 23. テーブルを効率的に比較する
- 24. パンダ効率的な要素の比較
- 25. MPI BMP画像比較の効率化
- 26. 効率的な文字列の比較
- 27. 配列比較、whileループと効率
- 28. は効率的Iを効率的<strong>に必要</strong><code>n</code> 選択肢から長<code>k</code>次の順列を計算するn個の選択肢から
- 29. オラクル - との2つの列を比較すると、<>
- 30. この「<null>」文字列を比較するには?
これらのパターンはマシンレベルでも1つのオペコードとして利用できます。別々のゼロとサインフラグがあるので、 '> = 0'はときどきもっと賢いことがあります。伝統的に部門だけが乗算よりも遅い。 –