Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 3240|Jawab: 2

[Sumber] Pengoptimalan performa .NET/C# menggunakan kueri paralel PLINQ

[Salin tautan]
Diposting pada 02/03/2024 17.30.49 | | | |
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.





Mantan:【Pertempuran Praktis】 Tutorial instalasi plugin luci-app OpenWrt
Depan:SQL Server menggunakan peristiwa yang diperluas untuk melacak masalah kebuntuan
 Tuan tanah| Diposting pada 20/03/2024 22.29.27 |
HuairongChen Dipaparkan pada 2024-3-20 16:05
Saya menggunakan Paralel untuk mengaktifkan paralelisme sinkron untuk menggandakan kinerja, tetapi saya juga perlu memperhatikan masalah pemrosesan data paralel...

Anda memasukkan item+=1; Ganti dengan thread.sleep(100) untuk kontras yang lebih jelas
Diposting pada 20/03/2024 16.05.24 |


Saya menggunakan Parallel untuk mengaktifkan paralelisme sinkron untuk menggandakan kinerja, tetapi saya juga perlu memperhatikan masalah pemrosesan data paralel
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com