Recentemente, a Microsoft publicou um post no blog sobre melhorias de desempenho do .NET 6, que mencionou muitas coisas interessantes, uma delas foi o Random.Shared.
Esta é uma propriedade estática somente leitura e um objeto seguro para threads, isso pode nos ajudar a simplificar o uso de objetos aleatórios.
Random.SharedFornece uma instância thread-safe do Random que pode ser usada de qualquer thread ao mesmo tempo。 Referência:O login do hiperlink está visível.
Primeiramente, precisamos saber que Random não é seguro para threads, então, se quisermos usar Random em multithreading, geralmenteA segurança da rosca precisa ser considerada。 Como não é seguro para threads, podemos criar um quando usamos, e um novo toda vez, mas nesse caso, o código não é conciso o suficiente e, por outro lado, pode criar mais objetos aleatórios, além de haver um overhead de desempenho.
Vamos comparar e testar com o BenchmarkDotNet, e o código é o seguinte:
O método antigo é que eu sempre novo um novo objeto aleatório para gerar um número aleatório, e o método Novo chama o método Random.Shared mais recente fornecido no .NET 6. As renderizações de teste são as seguintes:
Analisamos o tempo médio médio de execução com as novas funcionalidades10x de impulso。
(Fim)
|