tgoop.com/csharp_gepard/159
Last Update:
Unsafe.SkipInit для структур #скорость
Как раз на конференции, в кулуарах, спрашивали про Unsafe.SkipInit
. Набросал бенчмарк, который будет в комментариях.
Как я уже говорил, это решение следующей проблемы:
1. Выделяется память.
2. Эта память заполняется дефолтными значениями (чтобы программист не получил в значениях полей структуры явную тарабарщину от предыдущих пользователей памяти). Условно 0000000000
.
3. Память, в виде структуры, отдаётся пользователю (программисту). В классическом варианте, программист получит в числовом поле 0 (deafult), а в ссылочном - null.
Вот Unsafe.SkipInit
говорит, мол, господин рантайм, я и сам заполню все значения. Ну или, в смысле доклада, я и сам знаю какая область памяти мне нужна как инициализированная. То есть п.2 не выполняется. Что заметно улучшает скорость. Документация тут, там есть интересные примеры.
Кстати, обратите внимание на разницу в .NET 8 и .NET 9.
Коллеги работают!
P.S.: Про массивы читать тут.
BY C# Heppard

Share with your friend now:
tgoop.com/csharp_gepard/159