Обновить
8
12

Пользователь

Отправить сообщение

Маски, Каскады, использование масок вместо циклов(В некоторых случаях) + Атомарные инструкции

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели8.9K

Привет Хабр!

Сегодня я решил закрыть трилогию статей, а закончи парой не мало важных тем. Хочу сказать огромное спасибо тем кто активничает и задает вопросы. Ну что ж, начнем.

Читать далее

SIMDe, дополнение к DOD архитектуре

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели12K

Привет, Хабр!

Для начала хочу сказать огромное спасибо всем, кто прочитал и прокомментировал мою прошлую статью про Data-Oriented Design.

Честно говоря, я ожидал дискуссии, но такой накал страстей вокруг кэш-миссов, структур данных и «смерти ООП» меня приятно удивил. Приятно видеть, что оптимизация и понимание того, как данные текут через железо, всё еще волнуют сообщество.

Я внимательно изучил все ваши аргументы — от «компилятор сам всё сделает» до «это невозможно поддерживать в реальных проектах». И вместо того, чтобы отвечать каждому в ветке комментариев, я решил подготовить этот материал.

Многие из вас совершенно справедливо заметили: DOD — это круто, но какой в нем смысл, если мы упираемся в зоопарк архитектур? Мы раскладываем данные в памяти идеально ровно, но как только пытаемся применить к ним SIMD-инструкции (чтобы получить тот самый 10-кратный буст), мы попадаем в ловушку вендор-лока. Написал под Intel — не работает на ARM. Написал под ARM — не заведется в браузере.

Сегодня я хочу показать инструмент, который снимает этот вопрос и делает «низкоуровневую магию» действительно универсальной.

Речь пойдет о SIMDe (SIMD Everywhere).

Читать далее

Что же такое DOD и почему мы это забыли?

Время на прочтение5 мин
Охват и читатели9.5K

Мы привыкли думать абстракциями. Нас учили, что мир состоит из объектов: у «Собаки» есть метод Bark(), а у «Пользователя» — поле Email. Мы тратим недели на споры о чистоте интерфейсов и иерархии наследования, свято веря, что инкапсуляция — это ключ к успеху. Но пока мы строим эти ментальные замки, наш процессор... скучает.

Современный CPU — это невероятно мощный вычислительный монстр, способный обрабатывать миллиарды операций в секунду. Но у него есть ахиллесова пята — память. Пока ваш код прыгает по указателям от одного объекта в куче к другому, процессор простаивает в ожидании данных, совершая те самые «cache misses».

Data-Oriented Design (DOD) — это не просто очередной паттерн. Это «таблетка реальности», которая предлагает перестать проектировать программы вокруг сущностей и начать проектировать их вокруг данных.

В этой статье мы разберем, почему классическое ООП часто работает против производительности, как помочь кэшу процессора полюбить ваш код и почему в 2024 году пора вспомнить, что программа — это просто трансформация одних байтов в другие.

Читать далее

Информация

В рейтинге
588-й
Зарегистрирован
Активность

Специализация

Пентестер, Специалист по реверс-инжинирингу
Младший
C
Zig
Rust
Assembler
Системное программирование
Linux
Embedded linux
Алгоритмы и структуры данных
Vim