Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 3240|Відповідь: 2

[Джерело] Оптимізація продуктивності .NET/C# за допомогою паралельного запиту PLINQ

[Копіювати посилання]
Опубліковано 02.03.2024 17:30:49 | | | |
Що таке паралельний запит?

Багато аспектів запиту PLINQ схожі на непаралельні запити LINQ до об'єктів. Як і послідовні LINQ-запити, запити PLINQ виконують операції над будь-яким джерелом даних IEnumerable або IEnumerable у<T> пам'яті та відкладають виконання, тобто вони не починають виконувати процес, доки запит не буде перерахований. Головна різниця в тому, що PLINQ намагається максимально ефективно використовувати всі процесори у вашій системі. Метод полягає в розділенні джерела даних на фрагменти, а потім у виконанні паралельних запитів на кількох процесорах для кожного фрагмента в окремому робочому потоку. У багатьох випадках паралельне виконання означає, що запити виконуються значно швидше.

При паралельному виконанні PLINQ може суттєво покращити продуктивність (порівняно зі старим кодом для певних типів запитів), часто просто додаючи операції запитів AsParallel до джерела даних. Однак паралелізм може внести власну складність, тому не всі операції запиту виконуються швидше в PLINQ. Насправді, паралелізм навіть уповільнює деякі запити. Тому важливо розуміти, як такі питання, як сортування, впливають на паралельні запити. Для детальнішої інформації див. Розуміння прискорення в PLINQ.

Простий приклад

Для 10 000 даних у колекції код виглядає так:



Інші функції, які використовує PLINQ

1. Використовуючи AsSequential, якщо ви не хочете використовувати паралельні запити в процесі, ви можете скористатися цією функцією для відновлення до послідовних запитів.


2. За допомогою AsOrdered, оскільки PLINQ працює паралельно, результати можуть бути не в порядку, що можна запитати, додавши метод AsOrder.


3. Використовуйте WithDegreeOfParallelism, ця властивість може встановлювати кількість CUP паралельно на комп'ютері.


Примітка до сцени

У багатьох випадках запити можна паралелізувати, але накладні витрати на налаштування паралельних запитів можуть переважати приріст продуктивності.Якщо запит не виконує велику кількість обчислень або якщо джерело даних невелике, запит PLINQ може бути повільнішим за послідовний запит LINQ до об'єктів。 Ви можете використовувати Parallel Performance Analyzer у Visual Studio Team Server, щоб порівняти продуктивність різних запитів, знайти вузькі місця в обробці та визначити, чи виконуються запити паралельно чи послідовно.

Посилання:Вхід за гіперпосиланням видно.





Попередній:【Practical Combat】OpenWrt installation of luci-app plugin tutorial
Наступний:SQL Server використовує розширені події для відстеження проблем із глухим блокуванням
 Орендодавець| Опубліковано 20.03.2024 22:29:27 |
HuairongChen Опубліковано 2024-3-20 16:05
Я використав паралельний режим, щоб синхронний паралелізм подвоїв продуктивність, але мені також потрібно звернути увагу на проблему паралельної обробки даних...

Ви ставите предмет+=1; Замініть його на thread.sleep (100) для більш помітного контрасту
Опубліковано 20.03.2024 16:05:24 |


Я використав паралельний режим, щоб синхронний паралелізм подвоїв продуктивність, але мені також потрібно звернути увагу на проблему паралельної обробки даних
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com