Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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-03-20 16:05
Я использовал Parallel, чтобы синхронный параллелизм удвоил производительность, но мне также нужно обратить внимание на проблему параллельной обработки данных...

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


Я использовал параллель, чтобы обеспечить синхронный параллелизм и удвоить производительность, но мне также нужно обратить внимание на проблему параллельной обработки данных
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com