Recent, Microsoft a postat un articol pe blog despre îmbunătățirile performanței în .NET 6, care menționa multe lucruri interesante, unul dintre ele fiind Random.Shared.
Aceasta este o proprietate statică doar pentru citire și un obiect sigur pentru thread, acest lucru ne poate ajuta să simplificăm utilizarea obiectelor aleatoare.
Random.SharedOferă o instanță thread-safe de Random care poate fi folosită din orice fir simultan。 Referință:Autentificarea cu hyperlink este vizibilă.
În primul rând, trebuie să știm că Random nu este thread-safe, așa că dacă vrem să folosim Random în multithreading, de obiceiSiguranța firului trebuie luată în considerare。 Deoarece nu este sigur pentru fire, putem crea unul când îl folosim și unul nou de fiecare dată, dar în acest caz codul nu este suficient de concis și, pe de altă parte, poate crea mai multe obiecte aleatorii și există și un overhead de performanță.
Să comparăm și să testăm cu BenchmarkDotNet, iar codul este următorul:
Metoda veche este că întotdeauna am un obiect Random nou pentru a genera un număr aleatoriu, iar metoda nouă apelează cea mai recentă metodă Random.Shared oferită în .NET 6. Randările de test sunt următoarele:
Analizăm timpul mediu mediu de execuție cu noile funcționalitățiBoost de 10x。
(Sfârșit)
|