Introdução ao pacote de Alto Desempenho
O CommunityToolkit.HighPerformance
contém auxiliares e extensões para trabalhar em cenários de alto desempenho. Esse pacote pode ser instalado por meio do NuGet e tem os vários destinos a seguir:
- .NET Standard 2.0
- .NET Standard 2.1
- .NET 6
- .NET 7
Isso significa que você pode usá-lo de qualquer lugar, desde aplicativos UWP ou .NET Framework herdados, jogos escritos no Unity, aplicativos móveis multiplataforma usando o Xamarin, até bibliotecas do .NET Standard e aplicativos .NET 6 e .NET 7 modernos. A superfície da API é quase idêntica em todos os casos, e muito trabalho foi dedicado a fazer backport de tantos recursos quanto possível para destinos mais antigos, como o .NET Standard 2.0. Exceto por algumas pequenas diferenças, você pode esperar que as mesmas APIs estejam disponíveis em todas as estruturas de destino. O motivo pelo qual o multi-direcionamento foi usado é permitir que o pacote aproveite todas as APIs mais recentes em runtimes modernos (como o .NET 7) sempre que possível, ao mesmo tempo que oferece a maioria de suas funcionalidades para todas as plataformas de destino.
Introdução
Para instalar o pacote de dentro do Visual Studio:
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e selecione Gerenciar Pacotes NuGet. Pesquise CommunityToolkit.HighPerformance e instale-o.
Adicione uma diretiva using ou Imports para usar as novas APIs:
using CommunityToolkit.HighPerformance;
Imports CommunityToolkit.HighPerformance
Exemplos de código estão disponíveis nas outras páginas de documentos para o Kit de Ferramentas do MVVM e nos testes de unidade do projeto.
Quando devo usar esse recurso?
Como o nome sugere, o pacote de Alto Desempenho contém um conjunto de APIs que estão fortemente focadas na otimização. Todas as novas APIs foram cuidadosamente criadas para obter o melhor desempenho possível ao usá-las, seja por meio de alocação de memória reduzida, micro otimizações no nível do assembly ou estruturando as APIs de forma a facilitar a gravação de código orientado ao desempenho em geral.
Esse pacote faz uso intenso de APIs como:
System.Span<T>
System.Memory<T>
System.Buffers.ArrayPool<T>
System.Runtime.CompilerServices.Unsafe
System.Runtime.InteropServices.MemoryMarshal
System.Threading.Tasks.Parallel
Se você já estiver familiarizado com essas APIs ou mesmo se estiver apenas começando a escrever código de alto desempenho no C# e quiser que um conjunto de auxiliares bem testados use em seus próprios projetos, confira o que está incluído neste pacote para ver como você pode usá-lo em seus próprios projetos!
Por onde começar?
Aqui estão algumas APIs que você poderia examinar primeiro, se já estivesse usando um desses tipos mencionados acima:
Span2D<T>
eMemory2D<T>
, para umSpan<T>
e um abstração semelhante aMemory<T>
sobre memória 2DMemoryOwner<T>
eSpanOwner<T>
se você estivesse usandoSystem.Buffers.ArrayPool<T>
.StringPool
para um tipo semelhante aArrayPool<T>
para a instânciasstring
de cacheParallelHelper
se você estivesse usandoSystem.Threading.Tasks.Parallel
.
Recursos adicionais
Você pode encontrar mais exemplos nos teste de unidade.
.NET Community Toolkit