Сообщество RSS DEV

Ваш код медленный, потому что вы думаете в объектах, а не в данных

Статья объясняет, что производительность ЦП часто ограничивается медленным доступом к ОЗУ и возникающим в результате "пробкой фон Неймана". Объектно-ориентированное проектирование, хотя и способствует читаемости кода, может разбрасывать данные, что приводит к промахам кэша. Ориентированное на данные проектирование (DOD) решает эту проблему, оптимизируя макет данных для лучшего использования ЦП. Основной концепцией является переход от "массива структур" (AoS) к "структуре массивов" (SoA), улучшающий пространственную локальность и позволяющий использовать оптимизацию SIMD. Другими важными методами являются разделение на "горячие" и "холодные" данные, выравнивание данных и программирование без ветвлений, чтобы избежать неправильных предсказаний. Эффективное управление памятью посредством аллокаторов арен и использования хэндлов также рекомендуется для уменьшения фрагментации и улучшения доступа к данным. DOD подходит для операций, ограниченных памятью и ЦП, особенно тех, которые находятся в горячих путях. Необходимо оценить узкое место производительности перед применением DOD. При решении о применении этих методов следует учитывать количество обрабатываемых элементов. DOD часто повышает производительность при работе с большим количеством элементов данных в критических разделах программы.
favicon
dev.to
Your Code Is Slow Because You Think in Objects, Not Data
Create attached notes ...