Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 3240|Resposta: 2

[Fonte] Otimização de desempenho .NET/C# usando consulta paralela PLINQ

[Copiar link]
Publicado em 02/03/2024 17:30:49 | | | |
O que é uma consulta paralela?

Muitos aspectos de uma consulta PLINQ são semelhantes às consultas LINQ para Objetos não paralelas. Assim como consultas sequenciais LINQ, consultas PLINQ realizam operações em qualquer fonte de dados IEnumerável ou IEnumerável<T> em memória e adiam a execução, ou seja, só começam a ser executadas quando a consulta é enumerada. A principal diferença é que a PLINQ tenta aproveitar ao máximo todos os processadores do seu sistema. O método é particionar a fonte de dados em fragmentos e então realizar consultas paralelas em múltiplos processadores para cada fragmento em um thread de trabalho separado. Em muitos casos, a execução paralela significa que as consultas rodam significativamente mais rápido.

Com execução paralela, o PLINQ pode melhorar significativamente o desempenho (em comparação com códigos antigos para certos tipos de consultas), muitas vezes simplesmente adicionando operações de consulta AsParallel à fonte de dados. No entanto, o paralelismo pode introduzir sua própria complexidade, então nem todas as operações de consulta rodam mais rápido no PLINQ. Na verdade, o paralelismo até desacelera algumas consultas. Portanto, é importante entender como questões como a ordenação afetarão consultas paralelas. Para mais informações, veja Entendendo aceleração no PLINQ.

Exemplo simples

Para 10.000 dados na coleção, o código é o seguinte:



Outros recursos usados pela PLINQ

1. Usando o AsSequential, se você não quiser usar consultas paralelas no processo, pode usar esse recurso para restaurar consultas sequenciais.


2. Usando o AsOrdered, como o PLINQ roda em paralelo, os resultados podem não estar em ordem, o que pode ser consultado adicionando o método AsOrdered.


3. Use WithDegreeOfParallelism, essa propriedade pode definir o número de CUPs em paralelo no computador.


Nota da cena

Em muitos casos, consultas podem ser paralelizadas, mas a sobrecarga de configurar consultas paralelas pode superar os ganhos de desempenho.Se a consulta não realizar um grande número de cálculos, ou se a fonte de dados for pequena, a consulta PLINQ pode ser mais lenta do que uma consulta sequencial LINQ para Objetos。 Você pode usar o Parallel Performance Analyzer no Visual Studio Team Server para comparar o desempenho de várias consultas, encontrar gargalos de processamento e determinar se as consultas estão rodando em paralelo ou sequencialmente.

Referência:O login do hiperlink está visível.





Anterior:【Combate Prático】Instalação OpenWrt do tutorial do plugin luci-app
Próximo:O SQL Server usa eventos estendidos para acompanhar problemas de deadlock
 Senhorio| Publicado em 20/03/2024 22:29:27 |
HuairongChen Postado em 20-03-2024 às 16:05
Usei o Parallel para permitir o paralelismo síncrono e dobrar o desempenho, mas também preciso prestar atenção ao problema do processamento paralelo de dados...

Você coloca item+=1; Substitua por thread.sleep(100) para um contraste mais óbvio
Publicado em 20/03/2024 16:05:24 |


Usei o Parallel para permitir paralelismo síncrono e dobrar o desempenho, mas também preciso prestar atenção ao problema do processamento paralelo de dados
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com