Наскоро Microsoft публикува блог пост за подобренията в производителността на .NET 6, в който се споменаха много интересни неща, едно от които беше Random.Shared.
Това е статично свойство само за четене и обект за нишки, което може да ни помогне да опростим използването на случайни обекти.
Случайно. СподеленоПредоставя безопасен за нишки инстанция на Random, която може да се използва от всяка нишка едновременно。 Препратка:Входът към хиперлинк е видим.
Първо, трябва да знаем, че Random не е безопасен за нишки, така че ако искаме да използваме Random в multithreading, обикновеноТрябва да се вземе предвид безопасността на резбата。 Тъй като не е безопасен за нишки, можем да създадем един, когато го използваме, и винаги нов, но в този случай кодът не е достатъчно кратък, а от друга страна може да създаде повече случайни обекти и има и натоварване за производителността.
Нека го сравним и тестваме с BenchmarkDotNet, и кодът е следният:
Старият метод е, че винаги добавям нов случаен обект, за да генерира случайно число, а новият метод извиква най-новия Random.Shared метод, предоставен в .NET 6. Тестовите визуализации са както следва:
Гледаме средното средно време за изпълнение с новите функции10x усилване。
(Край)
|