ホームページ > バックエンド開発 > C++ > C# Sort と OrderBy: 最適なパフォーマンスを得るにはどちらを使用する必要があるか?

C# Sort と OrderBy: 最適なパフォーマンスを得るにはどちらを使用する必要があるか?

Linda Hamilton
リリース: 2025-01-04 20:33:49
オリジナル
720 人が閲覧しました

C# Sort vs. OrderBy: When Should I Use Which for Optimal Performance?

C# Sort と OrderBy: パフォーマンスとアルゴリズムの比較

概要

コレクションを並べ替える場合C# では、開発者には Sort と OrderBy という 2 つの主要なオプションがあります。どちらのメソッドも同じ最終結果を達成しますが、基礎となるアルゴリズムとパフォーマンス特性が異なります。

パフォーマンスに関する考慮事項

一般的な考えに反して、Sort と OrderBy は使用しません。同じソートアルゴリズム。並べ替えでは、QuickSort アルゴリズムが使用されますが、これは不安定な並べ替えであり、等しい値を持つ要素の順序が保持されない可能性があります。一方、OrderBy は安定した並べ替えを使用し、等しい値を持つ要素が相対的な順序を維持するようにします。

したがって、順序付けが重要であり、元のシーケンスの保持が必要な場合は、OrderBy をお勧めします。ただし、パフォーマンスが最優先であり、不安定性が許容される場合は、Sort の方が高速な解決策が提供される可能性があります。

Algorithm Comparison

List.Sort

  • クイックソートを利用します平均複雑度 O(n log n) のアルゴリズム。
  • 不安定な並べ替えを実行します。
  • コレクション全体をメモリにバッファリングします。

列挙可能。 OrderBy

  • 安定したソートを採用しますアルゴリズム。
  • コレクションに対して複数の反復を実行する可能性があり、速度が低下する可能性があります。
  • コレクション全体をバッファリングしないため、ソートされた要素の段階的な取得が可能です。

実装例

ソートする次のコードを考えてみましょう。名前別の Person オブジェクトのリスト:

// Using Sort
List<Person> persons = new List<Person>();
...
persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));

// Using OrderBy
var query = persons.OrderBy(n => n.Name, new NameComparer());
ログイン後にコピー

OrderBy の場合、比較基準を指定するカスタム比較子 (NameComparer) を定義します。大文字と小文字を区別しない文字列比較には、StringComparer.InvariantCultureIgnoreCase などの事前定義された比較子を活用することもできます。

結論

一方、Sort と OrderBy はどちらも、コレクションを並べ替えるための実行可能なオプションを提供します。 、その適合性は特定の要件によって異なります。順序付けの保持が最優先である場合は、遅くなる可能性がありますが、OrderBy をお勧めします。逆に、不安定性が許容できるパフォーマンス重視のシナリオの場合は、Sort がより高速なソリューションを提供する可能性があります。

以上がC# Sort と OrderBy: 最適なパフォーマンスを得るにはどちらを使用する必要があるか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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