Récemment, Microsoft a publié un article de blog sur les améliorations de performance de .NET 6, qui mentionnait beaucoup de choses intéressantes, dont Random.Shared.
C’est une propriété statique en lecture seule, et un objet thread-safe, cela peut nous aider à simplifier l’utilisation des objets aléatoires.
Random.SharedFournit une instance thread-safe de Random pouvant être utilisée depuis n’importe quel thread en même temps。 Référence:La connexion hyperlientérée est visible.
Tout d’abord, il faut savoir que Random n’est pas sûr pour les threads, donc si on veut utiliser Random en multithreading, en généralLa sécurité du filetage doit être prise en compte。 Comme ce n’est pas sûr pour les threads, nous pouvons en créer un lorsque nous l’utilisons, et un nouveau à chaque fois, mais dans ce cas, le code n’est pas assez concis, et d’un autre côté, il peut créer plus d’objets aléatoires, ce qui entraîne aussi une surcharge de performance.
Comparons et testons avec BenchmarkDotNet, et le code est le suivant :
L’ancienne méthode consiste à toujours créer un nouvel objet aléatoire pour générer un nombre aléatoire, et la nouvelle méthode appelle la dernière méthode Random.Shared fournie dans .NET 6. Les rendus tests sont les suivants :
Nous examinons le temps moyen moyen d’exécution avec les nouvelles fonctionnalités10x boost。
(Fin)
|