Recentemente Microsoft ha pubblicato un post sul blog riguardo ai miglioramenti delle prestazioni di .NET 6, che menzionava molte cose interessanti, una delle quali era Random.Shared.
Questa è una proprietà statica di sola lettura e un oggetto thread-safe, questo strumento può aiutarci a semplificare l'uso degli oggetti casuali.
Casuale.CondivisoFornisce un'istanza thread-safe di Random che può essere usata da qualsiasi thread contemporaneamente。 Riferimento:Il login del link ipertestuale è visibile.
Prima di tutto, dobbiamo sapere che Random non è thread-safe, quindi se vogliamo usare Random nel multithreading, di solitoBisogna considerare la sicurezza del filo。 Poiché non è thread-safe, possiamo crearne uno quando lo usiamo, e uno nuovo ogni volta, ma in questo caso il codice non è abbastanza conciso e, d'altra parte, potrebbe creare più oggetti casuali, e c'è anche un overhead di prestazioni.
Confrontiamolo e testiamo con BenchmarkDotNet, e il codice è il seguente:
Il metodo vecchio è che seguo sempre un nuovo oggetto Random per generare un numero casuale, e il metodo New chiama l'ultimo metodo Random.Shared fornito in .NET 6. Le rappresentazioni di prova sono le seguenti:
Guardiamo il tempo medio medio di esecuzione con le nuove funzionalitàBoost 10x。
(Fine)
|