Владислав Белов — Алиасинг памяти в C++: прошлое, настоящее и будущее

29 подписчиков

12+
12+

3 просмотра

17 дней назад

ПожаловатьсяНарушение авторских прав

29 подписчиков

12+
12+

3 просмотра

17 дней назад

ПожаловатьсяНарушение авторских прав
12+
12+

3 просмотра

17 дней назад

Подробнее о конференции C++ Russia: https://jrg.su/nbdpQS — — Алиасинг — одна из самых важных и при этом до сих пор недостаточно хорошо понимаемых тем в системном программировании. Проблема контроля алиасинга существует во всех языках программирования, работающих с памятью напрямую. Однако в C++ она становится существенно сложнее: модель объектов, время жизни, преобразования типов и богатый набор низкоуровневых возможностей создают среду, в которой механизмы контроля алиасинга могут быть как мощным инструментом оптимизации, так и источником труднообнаружимых ошибок. Правильно используемый контроль алиасинга позволяет предоставлять компилятору больше свободы для оптимизаций, что ведет к улучшению производительности программ, а также делает код более предсказуемым и частично самодокументируемым. С другой стороны, ошибки в этой области могут приводить к неожиданной деградации производительности или к undefined behavior, которое проявляется только при определенных оптимизациях или на конкретных платформах. В C++ модель алиасинга формируется сразу несколькими слоями: 1) strict aliasing, 2) оптимизационные модели компиляторов (TBAA, noalias, alias scopes), 3) нестандартные расширения компиляторов, такие как __restrict. В докладе мы разберем, как компиляторы (GCC, Clang, MSVC) принимают решения об алиасинге и что может сделать программист, чтобы сделать свой код более быстрым и, что также важно, безопасным. Отдельное внимание будет уделено современным обсуждениям в стандарте C++ (restrict-like семантика, alias sets, свойства доступа для span/mdspan, pointer provenance), В докладе будут использоваться примеры кода на C++23, выдержки из последнего стандарта C++, а также фрагменты LLVM IR для объяснения работы оптимизатора. Доклад ориентирован на практическое применение знаний об алиасинге при написании высокопроизводительного и системного C++ кода.

Название:

Владислав Белов — Алиасинг памяти в C++: прошлое, настоящее и будущее

Категория:

Разное