Що таке паралельний запит?
Багато аспектів запиту 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, щоб порівняти продуктивність різних запитів, знайти вузькі місця в обробці та визначити, чи виконуються запити паралельно чи послідовно.
Посилання:Вхід за гіперпосиланням видно.
|