Baru-baru ini Microsoft memposting posting blog tentang peningkatan kinerja .NET 6, yang menyebutkan banyak hal menarik, salah satunya adalah Random.Shared.
Ini adalah properti statis baca-saja, dan objek yang aman untuk utas, hal ini dapat membantu kami menyederhanakan penggunaan objek Acak.
Acak.DibagikanMenyediakan instance Random yang aman untuk utas yang dapat digunakan dari utas apa pun secara bersamaan。 Referensi:Login hyperlink terlihat.
Pertama-tama, perlu kita ketahui bahwa Random tidak aman untuk utas, jadi jika kita ingin menggunakan Random dalam multithreading, biasanyaKeamanan ulir perlu dipertimbangkan。 Karena tidak aman untuk utas, kita dapat membuatnya saat kita menggunakannya, dan yang baru setiap saat, tetapi dalam hal ini, kodenya tidak cukup ringkas, dan di sisi lain, kodenya dapat membuat objek yang lebih acak, dan ada juga overhead kinerja.
Mari kita bandingkan dan uji dengan BenchmarkDotNet, dan kodenya adalah sebagai berikut:
Metode lama adalah saya selalu memperbarui objek Random baru untuk menghasilkan angka acak, dan metode New memanggil metode Random.Shared terbaru yang disediakan di .NET 6. Rendering pengujian adalah sebagai berikut:
Kami melihat rata-rata waktu eksekusi rata-rata dengan fitur-fitur baruPeningkatan 10x。
(Akhir)
|