Rumah > pembangunan bahagian belakang > C++ > Adakah Urutan Kaedah Sambungan LINQ (cth., Where and FirstOrDefault) Memberi Impak Prestasi?

Adakah Urutan Kaedah Sambungan LINQ (cth., Where and FirstOrDefault) Memberi Impak Prestasi?

Patricia Arquette
Lepaskan: 2025-01-11 10:10:41
asal
439 orang telah melayarinya

Does the Order of LINQ Extension Methods (e.g., Where and FirstOrDefault) Impact Performance?

Tertib kaedah sambungan LINQ

Sumber soalan: Adakah susunan kaedah sambungan LINQ menjejaskan prestasi?

Soalan:

Mengapakah susunan kaedah sambungan LINQ tidak menjejaskan prestasi dengan ketara? Sebagai contoh, membandingkan dua pernyataan berikut, seseorang mungkin berfikir bahawa Where diikuti dengan FirstOrDefault adalah lebih perlahan daripada FirstOrDefault diikuti dengan Where:

<code class="language-csharp">hugeList.Where(x => x.Text.Contains("10000")).FirstOrDefault();

hugeList.FirstOrDefault(x => x.Text.Contains("10000"));</code>
Salin selepas log masuk

Jawapan:

Andaian bahawa Where diikuti dengan FirstOrDefault akan menjadi lebih perlahan adalah salah. Where Tidak perlu mencari semua perlawanan sebelum mendapat perlawanan pertama. Ia mendapatkan semula padanan atas permintaan, yang bermaksud jika hanya perlawanan pertama diperlukan, ia berhenti selepas ia menemui perlawanan pertama.

Untuk menggambarkan ini, bayangkan senario berikut:

Tiga orang mengambil bahagian:

  • A memegang dek kad yang dikocok.
  • B memakai baju bertulis "Jika kad merah".
  • C berkata kepada B: "Beri saya kad pertama."

B akan berulang kali meminta kad daripada A sehingga A memberikan kad merah. Setelah kad merah pertama diperolehi, ia diserahkan kepada C dan proses tamat. B tidak perlu terus meminta kad daripada A selepas menemui kad merah pertama.

Begitu juga, dalam pernyataan LINQ, Where adalah seperti B, menapis kad (item dalam senarai) untuk mencari padanan pertama. Ia tidak perlu mencari semua perlawanan sebelum mengembalikan perlawanan pertama.

Sebaliknya, jika susunan kaedah sambungan diterbalikkan, dengan FirstOrDefault diikuti dengan Where, keadaannya berbeza. FirstOrDefault perlu mendapatkan semula item pertama, kemudian Where perlu menggunakan penapisnya, yang akan melibatkan gelung melalui semua item. Ini akan menjadi kurang cekap daripada Where diikuti dengan FirstOrDefault.

Oleh itu, apabila menentukan kesan prestasi kaedah sambungan LINQ, adalah penting untuk mempertimbangkan susunan penggunaannya, kerana ia akan menjejaskan kecekapan operasi bergantung pada kaedah khusus yang digunakan.

Atas ialah kandungan terperinci Adakah Urutan Kaedah Sambungan LINQ (cth., Where and FirstOrDefault) Memberi Impak Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan