Apa itu kueri paralel?
Banyak aspek kueri PLINQ mirip dengan kueri LINQ ke Objek non-paralel. Seperti kueri LINQ berurutan, kueri PLINQ melakukan operasi pada sumber data IEnumerable atau IEnumerable dalam memori<T> dan menunda eksekusi, yaitu, kueri tersebut tidak mulai dieksekusi sampai kueri dihitung. Perbedaan utamanya adalah PLINQ mencoba memaksimalkan semua prosesor di sistem Anda. Metodenya adalah mempartisi sumber data menjadi fragmen dan kemudian melakukan kueri paralel pada beberapa prosesor untuk setiap fragmen pada utas pekerja terpisah. Dalam banyak kasus, eksekusi paralel berarti kueri berjalan secara signifikan lebih cepat.
Dengan eksekusi paralel, PLINQ dapat secara signifikan meningkatkan performa (dibandingkan dengan kode lama untuk jenis kueri tertentu), seringkali hanya dengan menambahkan operasi kueri AsParallel ke sumber data. Namun, paralelisme dapat memperkenalkan kompleksitasnya sendiri, sehingga tidak semua operasi kueri berjalan lebih cepat di PLINQ. Faktanya, paralelisme sebenarnya memperlambat beberapa pertanyaan. Oleh karena itu, penting untuk memahami bagaimana masalah seperti penyortiran akan memengaruhi kueri paralel. Untuk informasi selengkapnya, lihat Memahami akselerasi di PLINQ.
Contoh sederhana
Untuk 10.000 potongan data dalam koleksi, kodenya adalah sebagai berikut:
Fitur lain yang digunakan oleh PLINQ
1. Menggunakan AsSequential, jika Anda tidak ingin menggunakan kueri paralel dalam prosesnya, Anda dapat menggunakan fitur ini untuk mengembalikan ke kueri berurutan.
2. Menggunakan AsOrdered, karena PLINQ berjalan secara paralel, hasilnya mungkin tidak berurutan, yang dapat dikueri dengan menambahkan metode AsOrdered.
3. Gunakan WithDegreeOfParallelism, properti ini dapat mengatur jumlah CUP secara paralel di komputer.
Catatan adegan
Dalam banyak kasus, kueri dapat diparalelkan, tetapi overhead penyiapan kueri paralel dapat lebih besar daripada peningkatan performa.Jika kueri tidak melakukan perhitungan dalam jumlah besar, atau jika sumber datanya kecil, kueri PLINQ mungkin lebih lambat daripada kueri LINQ ke Objek berurutan。 Anda dapat menggunakan Penganalisis Performa Paralel di Visual Studio Team Server untuk membandingkan performa berbagai kueri, menemukan kemacetan pemrosesan, dan menentukan apakah kueri berjalan secara paralel atau berurutan.
Referensi:Login hyperlink terlihat.
|