4

「最も異なる可能性が高いアイテムを最初に比較することで、compareToのパフォーマンスを大幅に向上させることができます」という声明を見つけました。本当ですか?もしそうなら、なぜですか?

4

3 に答える 3

5

いくつかのプロパティを持つクラスを考えてみましょう。インスタンスを比較するには、いくつかのプロパティを比較する必要があります。1 つを除くすべてのプロパティが等しい場合、実行する必要がある比較の量は、プロパティ比較の順序によって異なります。最初に異なるプロパティを比較すると、1 回の比較で結果が得られます。しかし、異なるプロパティを最後に比較すると、同じ結果を得るためにn回の比較を行う必要がありました。

@Kdeveloper が指摘したように、バッチで多くの同様の比較を行わない限り、パフォーマンスの違いは目立たないかもしれません。しかし、もう 1 つの利点は、IMHO論理順序付けです。これにより、クラス プロパティ間の論理関係について考えることができます。全体として、これは中断のない最適化であるため (つまり、コードの読み取りや保守が難しくなることはありません)、ほとんどの場合、実行する価値があると思います。

于 2011-02-28T13:00:24.077 に答える
1

はい、それは本当だ

最も選択的な比較を最初に置くと、平均して各比較で実行されるコードが少なくなるためです。ただし、これらのテストは通常​​非常に高速であるため、大きなコレクションを並べ替える場合など、多くのオブジェクトを比較する場合にのみ、速度の向上が顕著になります。

于 2011-02-28T13:00:20.967 に答える
0

本当ですか?もしそうなら、なぜですか?

まあ、文字通り言えば、いいえ。履歴に関係なく、メソッドのcompareTo実行には同じくらい時間がかかります。

特定の実装で全体的なパフォーマンスを向上できる場合は? はい、確かに。しかし、あなたの質問に答えるには、状況に関するより多くのコンテキストが必要です。

于 2011-02-28T13:00:11.257 に答える