CSHARP_GEPARD Telegram 159
Unsafe.SkipInit для структур #скорость

Как раз на конференции, в кулуарах, спрашивали про Unsafe.SkipInit. Набросал бенчмарк, который будет в комментариях.

Как я уже говорил, это решение следующей проблемы:
1. Выделяется память.
2. Эта память заполняется дефолтными значениями (чтобы программист не получил в значениях полей структуры явную тарабарщину от предыдущих пользователей памяти). Условно 0000000000.
3. Память, в виде структуры, отдаётся пользователю (программисту). В классическом варианте, программист получит в числовом поле 0 (deafult), а в ссылочном - null.

Вот Unsafe.SkipInit говорит, мол, господин рантайм, я и сам заполню все значения. Ну или, в смысле доклада, я и сам знаю какая область памяти мне нужна как инициализированная. То есть п.2 не выполняется. Что заметно улучшает скорость. Документация тут, там есть интересные примеры.

Кстати, обратите внимание на разницу в .NET 8 и .NET 9.
Коллеги работают!

P.S.: Про массивы читать тут.
🔥15👍2



tgoop.com/csharp_gepard/159
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Telegram message that reads: "Bear Market Screaming Therapy Group. You are only allowed to send screaming voice notes. Everything else = BAN. Text pics, videos, stickers, gif = BAN. Anything other than screaming = BAN. You think you are smart = BAN. To delete a channel with over 1,000 subscribers, you need to contact user support In 2018, Telegram’s audience reached 200 million people, with 500,000 new users joining the messenger every day. It was launched for iOS on 14 August 2013 and Android on 20 October 2013. Among the requests, the Brazilian electoral Court wanted to know if they could obtain data on the origins of malicious content posted on the platform. According to the TSE, this would enable the authorities to track false content and identify the user responsible for publishing it in the first place. How to create a business channel on Telegram? (Tutorial)
from us


Telegram C# Heppard
FROM American