Hacker News Digest

29 сентября 2025 г. в 23:12 • ssg.dev • ⭐ 197 • 💬 60

OriginalHN

#csharp#span#readonlyspan#memory-management#performance-optimization#unsafe-code#pointers#dotnet

Safe zero-copy operations in C#

В C# операции с массивами автоматически проверяют границы для безопасности, что может снижать производительность. Компилятор способен убрать проверки в идеальных условиях, например, в цикле с известными границами, но при передаче индексов извне проверки остаются, что видно по ассемблерному коду.

Можно использовать небезопасный код с указателями для полного избежания проверок, но это рискованно: ошибки ведут к сбоям или уязвимостям. Решение — тип Span<T>, который объединяет ссылку на данные и их длину, обеспечивая безопасный нулевой копирование доступ без дополнительных проверок. Это позволяет писать высокопроизводительный код без ущерба для безопасности, сочетая низкоуровневую эффективность с управляемыми гарантиями.